質問編集履歴
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -413,3 +413,5 @@
|
|
413
413
|
```
|
414
414
|
|
415
415
|
結果は例えばこうなります。
|
416
|
+
|
417
|
+
![イメージ説明](e84dde23de40bd14d30bd676c78e0bb5.png)
|
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -413,5 +413,3 @@
|
|
413
413
|
```
|
414
414
|
|
415
415
|
結果は例えばこうなります。
|
416
|
-
|
417
|
-
/Users/keisuke/Desktop/ 2019-05-03 1.17.48.png
|
4
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -411,3 +411,7 @@
|
|
411
411
|
# print(true_data)
|
412
412
|
|
413
413
|
```
|
414
|
+
|
415
|
+
結果は例えばこうなります。
|
416
|
+
|
417
|
+
/Users/keisuke/Desktop/ 2019-05-03 1.17.48.png
|
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -272,7 +272,7 @@
|
|
272
272
|
|
273
273
|
|
274
274
|
|
275
|
-
追記
|
275
|
+
###追記
|
276
276
|
|
277
277
|
うまくいかない、というのは良い予測ができないという意味です。明らかに簡単なデータなので、コードのモデルに何か問題があるのだろうと思っています。上記コードで学習したのち、以下のコードでテストしています。
|
278
278
|
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -269,3 +269,145 @@
|
|
269
269
|
|
270
270
|
|
271
271
|
chainerに詳しい方、回答いただけると嬉しいです。よろしくお願いします。
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
追記
|
276
|
+
|
277
|
+
うまくいかない、というのは良い予測ができないという意味です。明らかに簡単なデータなので、コードのモデルに何か問題があるのだろうと思っています。上記コードで学習したのち、以下のコードでテストしています。
|
278
|
+
|
279
|
+
```
|
280
|
+
|
281
|
+
import chainer
|
282
|
+
|
283
|
+
import chainer.functions as F
|
284
|
+
|
285
|
+
import chainer.links as L
|
286
|
+
|
287
|
+
from chainer import training,optimizers
|
288
|
+
|
289
|
+
import math
|
290
|
+
|
291
|
+
import numpy as np
|
292
|
+
|
293
|
+
from chainer.datasets import TupleDataset,split_dataset_random
|
294
|
+
|
295
|
+
from chainer import iterators,serializers
|
296
|
+
|
297
|
+
import matplotlib.pyplot as plt
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
class lstm(chainer.Chain):
|
304
|
+
|
305
|
+
def __init__(self,n_mid=4,n_out=1):
|
306
|
+
|
307
|
+
super(lstm,self).__init__()
|
308
|
+
|
309
|
+
with self.init_scope():
|
310
|
+
|
311
|
+
self.l1 = L.Linear(None,n_mid)
|
312
|
+
|
313
|
+
self.l2 = L.LSTM(n_mid,n_mid)
|
314
|
+
|
315
|
+
self.l3 = L.Linear(n_mid,n_out)
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
def reset_state(self):
|
320
|
+
|
321
|
+
self.l2.reset_state()
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
def __call__(self,x):
|
326
|
+
|
327
|
+
h = self.l1(x)
|
328
|
+
|
329
|
+
h = self.l2(h)
|
330
|
+
|
331
|
+
h = self.l3(h)
|
332
|
+
|
333
|
+
return h
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
loaded_net = L.Classifier(lstm())
|
338
|
+
|
339
|
+
chainer.serializers.load_npz('lstm.npz',loaded_net)
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
data = []
|
344
|
+
|
345
|
+
x = 10
|
346
|
+
|
347
|
+
for i in range(x):
|
348
|
+
|
349
|
+
data.append(math.sin(i/10))
|
350
|
+
|
351
|
+
data = np.array(data).astype('float32')
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
true_data = []
|
356
|
+
|
357
|
+
for i in range(100):
|
358
|
+
|
359
|
+
true_data.append(math.sin(i/10))
|
360
|
+
|
361
|
+
true_data = np.array(true_data).astype('float32')
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
def make_data(data):
|
366
|
+
|
367
|
+
l = np.zeros([1,1]).astype('float32')
|
368
|
+
|
369
|
+
data = data[-10:]
|
370
|
+
|
371
|
+
for i in range(len(l)):
|
372
|
+
|
373
|
+
l[i] = data[i:i+1]
|
374
|
+
|
375
|
+
return l
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
# print(make_data(data))
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
for i in range(100-x):
|
384
|
+
|
385
|
+
with chainer.using_config('train', False), chainer.using_config('enable_backprop', False):
|
386
|
+
|
387
|
+
y = loaded_net.predictor.__call__(make_data(data))
|
388
|
+
|
389
|
+
# print(np.array(y.data).reshape(-1))
|
390
|
+
|
391
|
+
data = np.append(data,y.data.reshape(-1)[-1])
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
plt.plot(range(len(data)),data,label='lstm')
|
400
|
+
|
401
|
+
plt.plot(range(len(true_data)),true_data,label='train_data')
|
402
|
+
|
403
|
+
plt.legend()
|
404
|
+
|
405
|
+
|
406
|
+
|
407
|
+
plt.show()
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
# print(true_data)
|
412
|
+
|
413
|
+
```
|
1
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
###chainerでLSTMを実装してsin波を学習したがうまくいかない
|
2
2
|
|
3
|
-
コードは以下です。分類でないのにclassifierでラップしてし
|
3
|
+
コードは以下です。分類でないのにclassifierでラップして実装しようとしているのでそこらへんで実装にミスがあると思うのですが…
|
4
4
|
|
5
5
|
|
6
6
|
|