質問編集履歴
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -205,4 +205,5 @@
|
|
205
205
|
|
206
206
|
# print(true_data)
|
207
207
|
```
|
208
|
-
結果は例えばこうなります。
|
208
|
+
結果は例えばこうなります。
|
209
|
+

|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -205,5 +205,4 @@
|
|
205
205
|
|
206
206
|
# print(true_data)
|
207
207
|
```
|
208
|
-
結果は例えばこうなります。
|
208
|
+
結果は例えばこうなります。
|
209
|
-
/Users/keisuke/Desktop/ 2019-05-03 1.17.48.png
|
4
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -204,4 +204,6 @@
|
|
204
204
|
plt.show()
|
205
205
|
|
206
206
|
# print(true_data)
|
207
|
-
```
|
207
|
+
```
|
208
|
+
結果は例えばこうなります。
|
209
|
+
/Users/keisuke/Desktop/ 2019-05-03 1.17.48.png
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -135,7 +135,7 @@
|
|
135
135
|
|
136
136
|
chainerに詳しい方、回答いただけると嬉しいです。よろしくお願いします。
|
137
137
|
|
138
|
-
追記
|
138
|
+
###追記
|
139
139
|
うまくいかない、というのは良い予測ができないという意味です。明らかに簡単なデータなので、コードのモデルに何か問題があるのだろうと思っています。上記コードで学習したのち、以下のコードでテストしています。
|
140
140
|
```
|
141
141
|
import chainer
|
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -133,4 +133,75 @@
|
|
133
133
|
serializers.save_npz('lstm.npz',net)
|
134
134
|
```
|
135
135
|
|
136
|
-
chainerに詳しい方、回答いただけると嬉しいです。よろしくお願いします。
|
136
|
+
chainerに詳しい方、回答いただけると嬉しいです。よろしくお願いします。
|
137
|
+
|
138
|
+
追記
|
139
|
+
うまくいかない、というのは良い予測ができないという意味です。明らかに簡単なデータなので、コードのモデルに何か問題があるのだろうと思っています。上記コードで学習したのち、以下のコードでテストしています。
|
140
|
+
```
|
141
|
+
import chainer
|
142
|
+
import chainer.functions as F
|
143
|
+
import chainer.links as L
|
144
|
+
from chainer import training,optimizers
|
145
|
+
import math
|
146
|
+
import numpy as np
|
147
|
+
from chainer.datasets import TupleDataset,split_dataset_random
|
148
|
+
from chainer import iterators,serializers
|
149
|
+
import matplotlib.pyplot as plt
|
150
|
+
|
151
|
+
|
152
|
+
class lstm(chainer.Chain):
|
153
|
+
def __init__(self,n_mid=4,n_out=1):
|
154
|
+
super(lstm,self).__init__()
|
155
|
+
with self.init_scope():
|
156
|
+
self.l1 = L.Linear(None,n_mid)
|
157
|
+
self.l2 = L.LSTM(n_mid,n_mid)
|
158
|
+
self.l3 = L.Linear(n_mid,n_out)
|
159
|
+
|
160
|
+
def reset_state(self):
|
161
|
+
self.l2.reset_state()
|
162
|
+
|
163
|
+
def __call__(self,x):
|
164
|
+
h = self.l1(x)
|
165
|
+
h = self.l2(h)
|
166
|
+
h = self.l3(h)
|
167
|
+
return h
|
168
|
+
|
169
|
+
loaded_net = L.Classifier(lstm())
|
170
|
+
chainer.serializers.load_npz('lstm.npz',loaded_net)
|
171
|
+
|
172
|
+
data = []
|
173
|
+
x = 10
|
174
|
+
for i in range(x):
|
175
|
+
data.append(math.sin(i/10))
|
176
|
+
data = np.array(data).astype('float32')
|
177
|
+
|
178
|
+
true_data = []
|
179
|
+
for i in range(100):
|
180
|
+
true_data.append(math.sin(i/10))
|
181
|
+
true_data = np.array(true_data).astype('float32')
|
182
|
+
|
183
|
+
def make_data(data):
|
184
|
+
l = np.zeros([1,1]).astype('float32')
|
185
|
+
data = data[-10:]
|
186
|
+
for i in range(len(l)):
|
187
|
+
l[i] = data[i:i+1]
|
188
|
+
return l
|
189
|
+
|
190
|
+
# print(make_data(data))
|
191
|
+
|
192
|
+
for i in range(100-x):
|
193
|
+
with chainer.using_config('train', False), chainer.using_config('enable_backprop', False):
|
194
|
+
y = loaded_net.predictor.__call__(make_data(data))
|
195
|
+
# print(np.array(y.data).reshape(-1))
|
196
|
+
data = np.append(data,y.data.reshape(-1)[-1])
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
plt.plot(range(len(data)),data,label='lstm')
|
201
|
+
plt.plot(range(len(true_data)),true_data,label='train_data')
|
202
|
+
plt.legend()
|
203
|
+
|
204
|
+
plt.show()
|
205
|
+
|
206
|
+
# print(true_data)
|
207
|
+
```
|
1
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
###chainerでLSTMを実装してsin波を学習したがうまくいかない
|
2
|
-
コードは以下です。分類でないのにclassifierでラップしてし
|
2
|
+
コードは以下です。分類でないのにclassifierでラップして実装しようとしているのでそこらへんで実装にミスがあると思うのですが…
|
3
3
|
|
4
4
|
```
|
5
5
|
import chainer
|