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

質問編集履歴

1

エラー内容の追加

2018/05/06 13:28

投稿

mizuwater
mizuwater

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,5 @@
1
1
  以下のように、dynamic_rnn()を用いて、LSTM1層を組み込んだニューラルネットの学習を行っていたのですが、これをLSTM2層、3層と増やすにはどのように書き換えればいいのでしょうか?
2
2
 
3
- 単純にdynamic_rnn()とrnn_cell.BasicLSTMCell()を増やして、前のLSTM層の出力を次のLSTM層の入力に使うだけではエラーが出て動きませんでした。。
4
-
5
- ご存知の方、教えていただけると助かります。
6
-
7
3
  ```python
8
4
  import tensorflow as tf
9
5
 
@@ -21,4 +17,76 @@
21
17
  p_logit = tf.matmul(f, W1) + b1
22
18
  p = tf.nn.softmax(p_logit)
23
19
  p_loss = tf.nn.softmax_cross_entropy_with_logits(logits=p_logit, labels=y)
24
- ```
20
+ ```
21
+
22
+ dynamic_rnn()とrnn_cell.BasicLSTMCell()を増やして、以下のようなコードに書き換えてみたのですが、エラーが出て動きませんでした。。
23
+
24
+ ```python
25
+ import tensorflow as tf
26
+ X = tf.placeholder(tf.float32, [None,time_steps,input_row], name='X') # Input data
27
+
28
+ lstm_1 = tf.nn.rnn_cell.BasicLSTMCell(15)#
29
+ lstm_2 = tf.nn.rnn_cell.BasicLSTMCell(15)#
30
+
31
+ lstm_out_1,states_op = tf.nn.dynamic_rnn(lstm_1,X,dtype=tf.float32,time_major=False)#
32
+ lstm_out_2,states_op = tf.nn.dynamic_rnn(lstm_2,lstm_out_1,dtype=tf.float32,time_major=False)#
33
+ lstm_out_1_last = lstm_out_2[:,-1,:]
34
+
35
+ f = tf.cond(train, lambda: tf.slice(lstm_out_1_last, [0, 0], [batch_size // 2, -1]), lambda: lstm_out_1_last)
36
+ y = tf.cond(train, lambda: tf.slice(Y, [0, 0], [batch_size // 2, -1]), lambda: Y)
37
+
38
+ W1 = weight_variable([15, 2])
39
+ b1 = bias_variable([2])
40
+ p_logit = tf.matmul(f, W1) + b1
41
+ p = tf.nn.softmax(p_logit)
42
+ p_loss = tf.nn.softmax_cross_entropy_with_logits(logits=p_logit, labels=y)
43
+ ```
44
+ ### エラー内容
45
+ File "main.py", line 178, in <module>
46
+ build_model()
47
+ File "main.py", line 129, in build_model
48
+ lstm_out_2,states_op = tf.nn.dynamic_rnn(lstm_2,lstm_out_1,dtype=tf.float32,time_major=False)#
49
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 627, in dynamic_rnn
50
+ dtype=dtype)
51
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 824, in _dynamic_rnn_loop
52
+ swap_memory=swap_memory)
53
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 3224, in while_loop
54
+ result = loop_context.BuildLoop(cond, body, loop_vars, shape_invariants)
55
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 2956, in BuildLoop
56
+ pred, body, original_loop_vars, loop_vars, shape_invariants)
57
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 2893, in _BuildLoop
58
+ body_result = body(*packed_vars_for_body)
59
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/control_flow_ops.py", line 3194, in <lambda>
60
+ body = lambda i, lv: (i + 1, orig_body(*lv))
61
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 795, in _time_step
62
+ (output, new_state) = call_cell()
63
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn.py", line 781, in <lambda>
64
+ call_cell = lambda: cell(input_t, state)
65
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn_cell_impl.py", line 339, in __call__
66
+ *args, **kwargs)
67
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/layers/base.py", line 699, in __call__
68
+ self.build(input_shapes)
69
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/rnn_cell_impl.py", line 588, in build
70
+ shape=[input_depth + h_depth, 4 * self._num_units])
71
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/layers/base.py", line 546, in add_variable
72
+ partitioner=partitioner)
73
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/checkpointable.py", line 436, in _add_variable_with_custom_getter
74
+ **kwargs_for_getter)
75
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 1317, in get_variable
76
+ constraint=constraint)
77
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 1079, in get_variable
78
+ constraint=constraint)
79
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 425, in get_variable
80
+ constraint=constraint)
81
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 394, in _true_getter
82
+ use_resource=use_resource, constraint=constraint)
83
+ File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/ops/variable_scope.py", line 733, in _get_single_variable
84
+ name, "".join(traceback.format_list(tb))))
85
+ 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:
86
+
87
+ File "main.py", line 128, in build_model
88
+ lstm_out_1,states_op = tf.nn.dynamic_rnn(lstm_1,X,dtype=tf.float32,time_major=False)#
89
+ File "main.py", line 178, in <module>
90
+ build_model()
91
+
92
+ ご存知の方、教えていただけると助かります。