質問編集履歴

7

2019/03/18 00:38

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
@@ -8,9 +8,7 @@
8
8
 
9
9
  time_layer.pyをいくら変更しても、反映されません。
10
10
 
11
- このプログラムは使われてないのでしょうか。
12
-
13
- それとも、他プログラムが見えないところで使われてるのでしょうか
11
+ rnnlm.pypredict関数で使われてるforward関数は、time_layer.pyTimeEmbeddingクラスのものはないのでしょうか
14
12
 
15
13
 
16
14
 

6

2019/03/18 00:38

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  for layer in self.layers:
102
102
 
103
- xs = layer.forward2(xs)
103
+ xs = layer.forward(xs)
104
104
 
105
105
 
106
106
 

5

2019/03/18 00:21

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
 
110
110
 
111
- def forward2(self, xs, ts):
111
+ def forward(self, xs, ts):
112
112
 
113
113
 
114
114
 

4

2019/03/18 00:15

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  このプログラムは使われてないのでしょうか。
12
12
 
13
+ それとも、他のプログラムが見えないところで使われているのでしょうか。
14
+
13
15
 
14
16
 
15
17
 

3

2019/03/17 09:00

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
File without changes

2

タイトルの変更

2019/03/17 08:59

投稿

rarara1028
rarara1028

スコア34

test CHANGED
@@ -1 +1 @@
1
- ゼロから作るDeepLearning2につてです。
1
+ python コードを変更しても何の反映もな
test CHANGED
File without changes

1

コードの追加

2019/03/17 07:43

投稿

rarara1028
rarara1028

スコア34

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,217 @@
12
12
 
13
13
 
14
14
 
15
+
16
+
17
+ rnnlm.py
18
+
15
- python
19
+ ```python
20
+
21
+ import sys
22
+
23
+ sys.path.append('..')
24
+
25
+ import numpy as np
26
+
27
+ from common.time_layers import TimeLSTM,TimeAffine,TimeSoftmaxWithLoss,TimeEmbedding
28
+
29
+ #from common.base_model import BaseModel
30
+
31
+
32
+
33
+
34
+
35
+ class Rnnlm:
36
+
37
+ def __init__(self, vocab_size=10000, wordvec_size=100, hidden_size=100):
38
+
39
+
40
+
41
+ V, D, H = vocab_size, wordvec_size, hidden_size
42
+
43
+ rn = np.random.randn
44
+
45
+
46
+
47
+ # 重みの初期化
48
+
49
+ embed_W = (rn(V, D) / 100).astype('f')
50
+
51
+
52
+
53
+ lstm_Wx = (rn(D, 4 * H) / np.sqrt(D)).astype('f')
54
+
55
+ lstm_Wh = (rn(H, 4 * H) / np.sqrt(H)).astype('f')
56
+
57
+ lstm_b = np.zeros(4 * H).astype('f')
58
+
59
+ affine_W = (rn(H, V) / np.sqrt(H)).astype('f')
60
+
61
+ affine_b = np.zeros(V).astype('f')
62
+
63
+
64
+
65
+ # レイヤの生成
66
+
67
+ self.layers = [
68
+
69
+ TimeEmbedding(embed_W),
70
+
71
+ TimeLSTM(lstm_Wx, lstm_Wh, lstm_b, stateful=True),
72
+
73
+ TimeAffine(affine_W, affine_b)
74
+
75
+ ]
76
+
77
+
78
+
79
+ self.loss_layer = TimeSoftmaxWithLoss()
80
+
81
+ self.lstm_layer = self.layers[1]
82
+
83
+
84
+
85
+ # すべての重みと勾配をリストにまとめる
86
+
87
+ self.params, self.grads = [], []
88
+
89
+ for layer in self.layers:
90
+
91
+ self.params += layer.params
92
+
93
+ self.grads += layer.grads
94
+
95
+
96
+
97
+ def predict(self, xs):
98
+
99
+ for layer in self.layers:
100
+
101
+ xs = layer.forward2(xs)
102
+
103
+
104
+
105
+ return xs
106
+
107
+
108
+
109
+ def forward2(self, xs, ts):
110
+
111
+
112
+
113
+ score = self.predict(xs)
114
+
115
+ loss = self.loss_layer.forward(score, ts)
116
+
117
+
118
+
119
+ return loss
120
+
121
+
122
+
123
+ def backward(self, dout=1):
124
+
125
+ dout = self.loss_layer.backward(dout)
126
+
127
+ for layer in reversed(self.layers):
128
+
129
+ dout = layer.backward(dout)
130
+
131
+ return dout
132
+
133
+
134
+
135
+ def reset_state(self):
136
+
137
+ self.lstm_layer.reset_state()
138
+
139
+ ```
140
+
141
+
142
+
143
+ 上のコードのself.layersでTimeEmbeddingオブジェクトを生成してると思うのですが、
144
+
145
+
146
+
147
+ time_layer.py
148
+
149
+ ```python
150
+
151
+ class TimeEmbedding:
152
+
153
+ def __init__(self, W):
154
+
155
+
156
+
157
+ self.params = [W]
158
+
159
+ self.grads = [np.zeros_like(W)]
160
+
161
+ self.layers = None
162
+
163
+ self.W = W
164
+
165
+
166
+
167
+
168
+
169
+ def forward(self, xs):
170
+
171
+ N, T = xs.shape
172
+
173
+ V, D = self.W.shape
174
+
175
+
176
+
177
+ out = np.empty((N, T, D), dtype='f')
178
+
179
+ self.layers = []
180
+
181
+
182
+
183
+ for t in range(T):
184
+
185
+ layer = Embedding(self.W)
186
+
187
+ out[:, t, :] = layer.forward(xs[:, t])
188
+
189
+ self.layers.append(layer)
190
+
191
+
192
+
193
+ return out
194
+
195
+
196
+
197
+ def backward(self, dout):
198
+
199
+ N, T, D = dout.shape
200
+
201
+
202
+
203
+ grad = 0
204
+
205
+ for t in range(T):
206
+
207
+ layer = self.layers[t]
208
+
209
+ layer.backward(dout[:, t, :])
210
+
211
+ grad += layer.grads[0]
212
+
213
+
214
+
215
+ self.grads[0][...] = grad
216
+
217
+ return None
218
+
219
+
220
+
221
+ ```
222
+
223
+ 上のtime_layer.pyをいくらいじっても、何の反映もありません。
224
+
225
+
16
226
 
17
227
  https://github.com/oreilly-japan/deep-learning-from-scratch-2/blob/master/ch07/generate_text.py
18
228