質問編集履歴

1

コードの修正

2020/06/29 05:58

投稿

ima_chan1107
ima_chan1107

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- とある論文(有料論文のため本文・図の引用はひとまず避けます)で、非時系列データを含む LSTM モデルというものがあり、それを Keras/TensorFlow のカスタムレイヤーで作成しようとしています。
1
+ とある論文(有料論文のため本文・図の引用は避けます)で、非時系列データを含む LSTM モデルというものがあり、それを Keras/TensorFlow のカスタムレイヤーで作成しようとしています。
2
2
 
3
3
  構造としては、時系列データは従来の LSTM と同様に入力ゲート、出力ゲート、忘却ゲート、ブロック入力に入力されますが、非時系列データは4つのうちブロック入力には入力されず、これにより記憶する必要のない非時系列データがメモリセルに記憶されず、非時系列データを含んだデータの学習精度が向上するといったものです。
4
4
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  import numpy as np
82
82
 
83
- from tensorflow.keras.layers import Input, RNN, AbstractRNNCell
83
+ from tensorflow.keras.layers import Input, Dense, RNN, AbstractRNNCell
84
84
 
85
85
  from tensorflow.python.keras import activations, constraints, initializers, regularizers
86
86
 
@@ -180,7 +180,7 @@
180
180
 
181
181
  self.kernel1 = self.add_weight(shape=(input_dim1, self.units * 4),
182
182
 
183
- name='kernel',
183
+ name='kernel1',
184
184
 
185
185
  initializer=self.kernel_initializer,
186
186
 
@@ -190,7 +190,7 @@
190
190
 
191
191
  self.kernel2 = self.add_weight(shape=(input_dim2, self.units * 3),
192
192
 
193
- name='kernel',
193
+ name='kernel2',
194
194
 
195
195
  initializer=self.kernel_initializer,
196
196
 
@@ -308,11 +308,11 @@
308
308
 
309
309
  f = self.recurrent_activation(x_f + K.dot(h_tm1, self.recurrent_kernel[:, :self.units])) # 忘却ゲート
310
310
 
311
- u = self.activation(x_u + K.dot(h_tm1, self.recurrene_kernel[:, self.units:self.units * 2])) #
311
+ u = self.activation(x_u + K.dot(h_tm1, self.recurrene_kernel[:, self.units:self.units * 2])) # ブロック入力
312
-
312
+
313
- i = self.recurrent_activation(x_i + K.dot(h_tm1, self.recurrent_kernel[:, self.units * 2:self.units * 3])) #
313
+ i = self.recurrent_activation(x_i + K.dot(h_tm1, self.recurrent_kernel[:, self.units * 2:self.units * 3])) # 入力ゲート
314
-
314
+
315
- o = self.recurrent_activation(x_o + K.dot(h_tm1, self.recurrent_kernel[:, self.units * 3:self.units * 4])) #
315
+ o = self.recurrent_activation(x_o + K.dot(h_tm1, self.recurrent_kernel[:, self.units * 3:self.units * 4])) # 出力ゲート
316
316
 
317
317
 
318
318
 
@@ -340,15 +340,11 @@
340
340
 
341
341
  t_input = Input(shape=(30, 1))
342
342
 
343
- print(t_input.shape)
344
-
345
343
  n_input = Input(shape=(30, 1))
346
344
 
347
- print(n_input.shape)
348
-
349
345
  h = NontsLSTM(128)([t_input, n_input])
350
346
 
351
- output = Dense(1, activation='linear')
347
+ output = Dense(1, activation='linear')(h)
352
348
 
353
349
 
354
350