質問編集履歴
5
typoを修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -85,9 +85,9 @@
|
|
85
85
|
```
|
86
86
|
をref.batch_scatter_updateの前の行に追記することでshapeのエラーはとりあえず出なくなりましたが、以下のエラーが出るようになりました。
|
87
87
|
```
|
88
|
-
File "/home/
|
88
|
+
File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 2772, in prod
|
89
89
|
initial=initial)
|
90
|
-
File "/home/
|
90
|
+
File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
|
91
91
|
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
|
92
92
|
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
|
93
93
|
```
|
4
追記を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -77,4 +77,18 @@
|
|
77
77
|
Tensorflowのバージョンは1.13.1
|
78
78
|
です。
|
79
79
|
|
80
|
-
解決策をご存知の方は教えていただけると幸いです。
|
80
|
+
解決策をご存知の方は教えていただけると幸いです。
|
81
|
+
|
82
|
+
## 追記
|
83
|
+
```python
|
84
|
+
ref.set_shape(init_value().shape)
|
85
|
+
```
|
86
|
+
をref.batch_scatter_updateの前の行に追記することでshapeのエラーはとりあえず出なくなりましたが、以下のエラーが出るようになりました。
|
87
|
+
```
|
88
|
+
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
|
89
|
+
initial=initial)
|
90
|
+
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
|
91
|
+
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
|
92
|
+
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
|
93
|
+
```
|
94
|
+
おそらくこれもinitial_valueに関数を指定しているせいで、typeがうまく参照されてないように思うのですが、直し方がわからないのでわかる方は教えていただけると幸いです。
|
3
誤字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,16 +1,6 @@
|
|
1
1
|
## 実現したいこと
|
2
|
-
BasicDecoderを継承したクラスの
|
2
|
+
BasicDecoderを継承したクラスのstep関数の内側でbatch_scatter_updateを使おうとしています。
|
3
3
|
|
4
|
-
## 問題が発生するまでの流れ
|
5
|
-
通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
|
6
|
-
|
7
|
-
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
|
8
|
-
le inside a loop or conditional, use a lambda as the initializer.`
|
9
|
-
と言うエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
|
10
|
-
|
11
|
-
それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で以下のエラーが出てしまっているように思われます。
|
12
|
-
|
13
|
-
|
14
4
|
## ソースコード(簡単のためにあまり意味がないコードになっています)
|
15
5
|
```python
|
16
6
|
import tensorflow as tf
|
@@ -71,7 +61,16 @@
|
|
71
61
|
x_static_shape.dims[1].value, x_static_shape.dims[0].value
|
72
62
|
TypeError: 'NoneType' object is not subscriptable
|
73
63
|
```
|
64
|
+
## 問題が発生するまでの流れ
|
65
|
+
通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
|
74
66
|
|
67
|
+
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
|
68
|
+
le inside a loop or conditional, use a lambda as the initializer.`
|
69
|
+
というエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
|
70
|
+
|
71
|
+
それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で上記のエラーが出てしまっているように思われます。
|
72
|
+
|
73
|
+
|
75
74
|
## 環境
|
76
75
|
OSはUbuntu 16.04.5
|
77
76
|
Pythonのバージョンは3.6.8
|
2
詳細の記述を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
+
## 実現したいこと
|
1
|
-
|
2
|
+
BasicDecoderを継承したクラスののstep関数の内側でbatch_scatter_updateを使おうとしています。
|
2
3
|
|
4
|
+
## 問題が発生するまでの流れ
|
5
|
+
通常のBasicDecoderの代わりにそれを継承した以下のようなクラスを使おうとしました。
|
3
6
|
|
4
|
-
|
7
|
+
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
|
8
|
+
le inside a loop or conditional, use a lambda as the initializer.`
|
9
|
+
と言うエラーが発生するためTensorではなく関数をinitial_valueに指定しました。
|
10
|
+
|
11
|
+
それによってbatch_scatter_updateの出力のshapeが<unknown>になり、そのせいでその後の処理のshapeを参照する箇所で以下のエラーが出てしまっているように思われます。
|
12
|
+
|
13
|
+
|
14
|
+
## ソースコード(簡単のためにあまり意味がないコードになっています)
|
5
15
|
```python
|
6
16
|
import tensorflow as tf
|
7
17
|
from tensorflow.contrib.seq2seq.python.ops import basic_decoder
|
@@ -49,7 +59,7 @@
|
|
49
59
|
return (outputs, next_state, next_inputs, finished)
|
50
60
|
```
|
51
61
|
|
52
|
-
エラーの内容
|
62
|
+
## エラーの内容
|
53
63
|
```
|
54
64
|
File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/tensorflow/contrib/seq2seq/python/ops/decoder.py", line 337, in dynam$c_decode
|
55
65
|
final_outputs = nest.map_structure(_transpose_batch_time, final_outputs)
|
@@ -60,4 +70,12 @@
|
|
60
70
|
File "/home/.pyenv/versions/anaconda3-5.3.1/envs/tensorflow_gpuenv/lib/python3.6/site-packages/tensorflow/python/ops/rnn.py", line 67, in _transpose_batch_time
|
61
71
|
x_static_shape.dims[1].value, x_static_shape.dims[0].value
|
62
72
|
TypeError: 'NoneType' object is not subscriptable
|
63
|
-
```
|
73
|
+
```
|
74
|
+
|
75
|
+
## 環境
|
76
|
+
OSはUbuntu 16.04.5
|
77
|
+
Pythonのバージョンは3.6.8
|
78
|
+
Tensorflowのバージョンは1.13.1
|
79
|
+
です。
|
80
|
+
|
81
|
+
解決策をご存知の方は教えていただけると幸いです。
|
1
ソースコードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
self.batch_size_ = batch_size
|
19
19
|
self.W = layers_core.Dense(
|
20
20
|
self.internal_size, name="W", use_bias=False)
|
21
|
-
self.index = tf.tile(tf.expand_dims(tf.range(self.internal_size), axis=0), [
|
21
|
+
self.index = tf.tile(tf.expand_dims(tf.range(self.internal_size), axis=0), [batch_size, 1])
|
22
22
|
|
23
23
|
|
24
24
|
def step(self, time, inputs, state, name=None):
|
@@ -32,10 +32,10 @@
|
|
32
32
|
return tf.tile(tf.zeros([1, self.target_vocab_size],
|
33
33
|
dtype=tf.float32),
|
34
34
|
[self.batch_size, 1])
|
35
|
-
scatter = tf.batch_scatter_update(
|
36
|
-
|
35
|
+
ref = tf.Variable(
|
37
|
-
initial_value=init_value, validate_shape=False)
|
36
|
+
initial_value=init_value, validate_shape=False)
|
37
|
+
scatter = ref.batch_scatter_update(
|
38
|
-
|
38
|
+
tf.IndexedSlices(weight, self.index))
|
39
39
|
cell_outputs = scatter
|
40
40
|
|
41
41
|
sample_ids = self._helper.sample(
|