質問編集履歴

5

typoを修正

2019/05/30 06:20

投稿

hukuda222
hukuda222

score13

test CHANGED
File without changes
test CHANGED
@@ -172,11 +172,11 @@
172
172
 
173
173
  ```
174
174
 
175
- File "/home/lr/fujisyo/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 2772, in prod
175
+ File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 2772, in prod
176
176
 
177
177
  initial=initial)
178
178
 
179
- File "/home/lr/fujisyo/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
179
+ File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
180
180
 
181
181
  return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
182
182
 

4

追記を追加

2019/05/30 06:20

投稿

hukuda222
hukuda222

score13

test CHANGED
File without changes
test CHANGED
@@ -157,3 +157,31 @@
157
157
 
158
158
 
159
159
  解決策をご存知の方は教えていただけると幸いです。
160
+
161
+
162
+
163
+ ## 追記
164
+
165
+ ```python
166
+
167
+ ref.set_shape(init_value().shape)
168
+
169
+ ```
170
+
171
+ をref.batch_scatter_updateの前の行に追記することでshapeのエラーはとりあえず出なくなりましたが、以下のエラーが出るようになりました。
172
+
173
+ ```
174
+
175
+ File "/home/lr/fujisyo/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 2772, in prod
176
+
177
+ initial=initial)
178
+
179
+ File "/home/lr/fujisyo/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
180
+
181
+ return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
182
+
183
+ TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
184
+
185
+ ```
186
+
187
+ おそらくこれもinitial_valueに関数を指定しているせいで、typeがうまく参照されてないように思うのですが、直し方がわからないのでわかる方は教えていただけると幸いです。

3

誤字の修正

2019/05/30 06:19

投稿

hukuda222
hukuda222

score13

test CHANGED
File without changes
test CHANGED
@@ -1,26 +1,6 @@
1
1
  ## 実現したいこと
2
2
 
3
- BasicDecoderを継承したクラスのstep関数の内側でbatch_scatter_updateを使おうとしています。
4
-
5
-
6
-
7
- ## 問題が発生するまでの流れ
8
-
9
- 通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
10
-
11
-
12
-
13
- RNNの内側でVariableを定義する際のinitial_valueにTensorをそのまま指定すると`ValueError: Initializer for variable model/decoder/while/BasicDecoderStep/Variable/ is from inside a control-flow construct, such as a loop or conditional. When creating a variab
14
-
15
- le inside a loop or conditional, use a lambda as the initializer.`
16
-
17
- と言うエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
18
-
19
-
20
-
21
- それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で以下のエラーが出てしまっているように思われます。
22
-
23
-
3
+ BasicDecoderを継承したクラスのstep関数の内側でbatch_scatter_updateを使おうとしています。
24
4
 
25
5
 
26
6
 
@@ -144,6 +124,24 @@
144
124
 
145
125
  ```
146
126
 
127
+ ## 問題が発生するまでの流れ
128
+
129
+ 通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
130
+
131
+
132
+
133
+ RNNの内側でVariableを定義する際のinitial_valueにTensorをそのまま指定すると`ValueError: Initializer for variable model/decoder/while/BasicDecoderStep/Variable/ is from inside a control-flow construct, such as a loop or conditional. When creating a variab
134
+
135
+ le inside a loop or conditional, use a lambda as the initializer.`
136
+
137
+ というエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
138
+
139
+
140
+
141
+ それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で上記のエラーが出てしまっているように思われます。
142
+
143
+
144
+
147
145
 
148
146
 
149
147
  ## 環境

2

詳細の記述を追加

2019/05/30 02:25

投稿

hukuda222
hukuda222

score13

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,30 @@
1
- TensorFlowのBasicDecoderを継承したクラスにて、step関数をオーバーライドしてbatch_scatter_updateを使った際に以下のエラーが生じました。解決策をご存知の方は教えてただける幸いです。
1
+ ## 実現したい
2
+
3
+ BasicDecoderを継承したクラスののstep関数の内側でbatch_scatter_updateを使おうとしています。
4
+
5
+
6
+
7
+ ## 問題が発生するまでの流れ
8
+
9
+ 通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
10
+
11
+
12
+
13
+ RNNの内側でVariableを定義する際のinitial_valueにTensorをそのまま指定すると`ValueError: Initializer for variable model/decoder/while/BasicDecoderStep/Variable/ is from inside a control-flow construct, such as a loop or conditional. When creating a variab
14
+
15
+ le inside a loop or conditional, use a lambda as the initializer.`
16
+
17
+ と言うエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
18
+
19
+
20
+
21
+ それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で以下のエラーが出てしまっているように思われます。
2
22
 
3
23
 
4
24
 
5
25
 
6
26
 
7
- ソースコード(簡単のためにあまり意味がないコードになっています)
27
+ ## ソースコード(簡単のためにあまり意味がないコードになっています)
8
28
 
9
29
  ```python
10
30
 
@@ -100,7 +120,7 @@
100
120
 
101
121
 
102
122
 
103
- エラーの内容
123
+ ## エラーの内容
104
124
 
105
125
  ```
106
126
 
@@ -123,3 +143,19 @@
123
143
  TypeError: 'NoneType' object is not subscriptable
124
144
 
125
145
  ```
146
+
147
+
148
+
149
+ ## 環境
150
+
151
+ OSはUbuntu 16.04.5
152
+
153
+ Pythonのバージョンは3.6.8
154
+
155
+ Tensorflowのバージョンは1.13.1
156
+
157
+ です。
158
+
159
+
160
+
161
+ 解決策をご存知の方は教えていただけると幸いです。

1

ソースコードの修正

2019/05/30 02:23

投稿

hukuda222
hukuda222

score13

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  self.internal_size, name="W", use_bias=False)
40
40
 
41
- self.index = tf.tile(tf.expand_dims(tf.range(self.internal_size), axis=0), [self.batch_size, 1])
41
+ self.index = tf.tile(tf.expand_dims(tf.range(self.internal_size), axis=0), [batch_size, 1])
42
42
 
43
43
 
44
44
 
@@ -66,13 +66,13 @@
66
66
 
67
67
  [self.batch_size, 1])
68
68
 
69
- scatter = tf.batch_scatter_update(
69
+ ref = tf.Variable(
70
70
 
71
- tf.Variable(
71
+ initial_value=init_value, validate_shape=False)
72
72
 
73
- initial_value=init_value, validate_shape=False),
73
+ scatter = ref.batch_scatter_update(
74
74
 
75
- index, weight)
75
+ tf.IndexedSlices(weight, self.index))
76
76
 
77
77
  cell_outputs = scatter
78
78