teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

修正

2019/05/02 16:26

投稿

sodiumplus3
sodiumplus3

スコア71

title CHANGED
File without changes
body CHANGED
@@ -205,4 +205,5 @@
205
205
 
206
206
  # print(true_data)
207
207
  ```
208
- 結果は例えばこうなります。
208
+ 結果は例えばこうなります。
209
+ ![イメージ説明](e84dde23de40bd14d30bd676c78e0bb5.png)

5

修正

2019/05/02 16:26

投稿

sodiumplus3
sodiumplus3

スコア71

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

追加

2019/05/02 16:25

投稿

sodiumplus3
sodiumplus3

スコア71

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

修正

2019/05/02 16:25

投稿

sodiumplus3
sodiumplus3

スコア71

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

追記

2019/05/02 16:24

投稿

sodiumplus3
sodiumplus3

スコア71

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

編集

2019/05/02 16:22

投稿

sodiumplus3
sodiumplus3

スコア71

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