質問編集履歴
1
エラー内容の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,4 @@
|
|
1
1
|
以下のように、dynamic_rnn()を用いて、LSTM1層を組み込んだニューラルネットの学習を行っていたのですが、これをLSTM2層、3層と増やすにはどのように書き換えればいいのでしょうか?
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
単純にdynamic_rnn()とrnn_cell.BasicLSTMCell()を増やして、前のLSTM層の出力を次のLSTM層の入力に使うだけではエラーが出て動きませんでした。。
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
ご存知の方、教えていただけると助かります。
|
10
2
|
|
11
3
|
|
12
4
|
|
@@ -45,3 +37,147 @@
|
|
45
37
|
p_loss = tf.nn.softmax_cross_entropy_with_logits(logits=p_logit, labels=y)
|
46
38
|
|
47
39
|
```
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
dynamic_rnn()とrnn_cell.BasicLSTMCell()を増やして、以下のようなコードに書き換えてみたのですが、エラーが出て動きませんでした。。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
```python
|
48
|
+
|
49
|
+
import tensorflow as tf
|
50
|
+
|
51
|
+
X = tf.placeholder(tf.float32, [None,time_steps,input_row], name='X') # Input data
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
lstm_1 = tf.nn.rnn_cell.BasicLSTMCell(15)#
|
56
|
+
|
57
|
+
lstm_2 = tf.nn.rnn_cell.BasicLSTMCell(15)#
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
lstm_out_1,states_op = tf.nn.dynamic_rnn(lstm_1,X,dtype=tf.float32,time_major=False)#
|
62
|
+
|
63
|
+
lstm_out_2,states_op = tf.nn.dynamic_rnn(lstm_2,lstm_out_1,dtype=tf.float32,time_major=False)#
|
64
|
+
|
65
|
+
lstm_out_1_last = lstm_out_2[:,-1,:]
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
f = tf.cond(train, lambda: tf.slice(lstm_out_1_last, [0, 0], [batch_size // 2, -1]), lambda: lstm_out_1_last)
|
70
|
+
|
71
|
+
y = tf.cond(train, lambda: tf.slice(Y, [0, 0], [batch_size // 2, -1]), lambda: Y)
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
W1 = weight_variable([15, 2])
|
76
|
+
|
77
|
+
b1 = bias_variable([2])
|
78
|
+
|
79
|
+
p_logit = tf.matmul(f, W1) + b1
|
80
|
+
|
81
|
+
p = tf.nn.softmax(p_logit)
|
82
|
+
|
83
|
+
p_loss = tf.nn.softmax_cross_entropy_with_logits(logits=p_logit, labels=y)
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
### エラー内容
|
88
|
+
|
89
|
+
File "main.py", line 178, in <module>
|
90
|
+
|
91
|
+
build_model()
|
92
|
+
|
93
|
+
File "main.py", line 129, in build_model
|
94
|
+
|
95
|
+
lstm_out_2,states_op = tf.nn.dynamic_rnn(lstm_2,lstm_out_1,dtype=tf.float32,time_major=False)#
|
96
|
+
|
97
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 627, in dynamic_rnn
|
98
|
+
|
99
|
+
dtype=dtype)
|
100
|
+
|
101
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 824, in _dynamic_rnn_loop
|
102
|
+
|
103
|
+
swap_memory=swap_memory)
|
104
|
+
|
105
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 3224, in while_loop
|
106
|
+
|
107
|
+
result = loop_context.BuildLoop(cond, body, loop_vars, shape_invariants)
|
108
|
+
|
109
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 2956, in BuildLoop
|
110
|
+
|
111
|
+
pred, body, original_loop_vars, loop_vars, shape_invariants)
|
112
|
+
|
113
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 2893, in _BuildLoop
|
114
|
+
|
115
|
+
body_result = body(*packed_vars_for_body)
|
116
|
+
|
117
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 3194, in <lambda>
|
118
|
+
|
119
|
+
body = lambda i, lv: (i + 1, orig_body(*lv))
|
120
|
+
|
121
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 795, in _time_step
|
122
|
+
|
123
|
+
(output, new_state) = call_cell()
|
124
|
+
|
125
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 781, in <lambda>
|
126
|
+
|
127
|
+
call_cell = lambda: cell(input_t, state)
|
128
|
+
|
129
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn_cell_impl.py", line 339, in __call__
|
130
|
+
|
131
|
+
*args, **kwargs)
|
132
|
+
|
133
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/layers/base.py", line 699, in __call__
|
134
|
+
|
135
|
+
self.build(input_shapes)
|
136
|
+
|
137
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn_cell_impl.py", line 588, in build
|
138
|
+
|
139
|
+
shape=[input_depth + h_depth, 4 * self._num_units])
|
140
|
+
|
141
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/layers/base.py", line 546, in add_variable
|
142
|
+
|
143
|
+
partitioner=partitioner)
|
144
|
+
|
145
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/checkpointable.py", line 436, in _add_variable_with_custom_getter
|
146
|
+
|
147
|
+
**kwargs_for_getter)
|
148
|
+
|
149
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 1317, in get_variable
|
150
|
+
|
151
|
+
constraint=constraint)
|
152
|
+
|
153
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 1079, in get_variable
|
154
|
+
|
155
|
+
constraint=constraint)
|
156
|
+
|
157
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 425, in get_variable
|
158
|
+
|
159
|
+
constraint=constraint)
|
160
|
+
|
161
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 394, in _true_getter
|
162
|
+
|
163
|
+
use_resource=use_resource, constraint=constraint)
|
164
|
+
|
165
|
+
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 733, in _get_single_variable
|
166
|
+
|
167
|
+
name, "".join(traceback.format_list(tb))))
|
168
|
+
|
169
|
+
ValueError: Variable rnn/basic_lstm_cell/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
File "main.py", line 128, in build_model
|
174
|
+
|
175
|
+
lstm_out_1,states_op = tf.nn.dynamic_rnn(lstm_1,X,dtype=tf.float32,time_major=False)#
|
176
|
+
|
177
|
+
File "main.py", line 178, in <module>
|
178
|
+
|
179
|
+
build_model()
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
ご存知の方、教えていただけると助かります。
|