来自 tf.nn.dynamic_rnn 的值错误:尺寸必须相等
Value error from tf.nn.dynamic_rnn: Dimensions must be equal
我想使用 tensorflow 的 tf.nn.dynamic_rnn
函数创建一个 RNN,但它允许我只为我的一个层设置隐藏大小。
这是我的代码:
self._Input=tf.placeholder(tf.float64,shape=(None,self._time_size,self._batch_dim),name='input')
self._Expected_o=tf.placeholder(tf.float64,shape=(None,self._time_size,self._cell_output_size),name='Expected_o')
#creation of the network
initializer = tf.random_uniform_initializer(-1, 1)
cell = tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
rnn_cells = tf.nn.rnn_cell.MultiRNNCell([cell] * self._num_layer)
# network
self._output, out_state = tf.nn.dynamic_rnn(cell=rnn_cells,inputs= self._Input, dtype=tf.float64)
只要我保持我的 hidden_size
值与我的输入占位符的最后一个维度相同,即 _batch_dim
.
,一切正常
但是当它不同时,我总是收到这个错误信息:
ValueError: Dimensions must be equal, but are 8 and X for
'rnn/while/rnn/multi_rnn_cell/cell_0/cell_0/gru_cell/MatMul_2' (op:
'MatMul') with input shapes: [?,Y], [X,Y].
其中 X
是我为 hidden_size + 1
设置的值,Y
是 hidden_size*2
的值。我尝试了很多 hidden_size
的值,这两个数字 X
和 Y
每次都会出现。消息错误表明错误发生在tf.rnn.dynamic_rnn
的调用过程中。
更改您的代码...
cell = tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
rnn_cells = tf.nn.rnn_cell.MultiRNNCell([cell] * self._num_layer)
至...
layers = [tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
for _ in self._num_layer]
rnn_cells = tf.nn.rnn_cell.MultiRNNCell(layers)
...更深的 GRU 层将能够适应较早层的输出。
我想使用 tensorflow 的 tf.nn.dynamic_rnn
函数创建一个 RNN,但它允许我只为我的一个层设置隐藏大小。
这是我的代码:
self._Input=tf.placeholder(tf.float64,shape=(None,self._time_size,self._batch_dim),name='input')
self._Expected_o=tf.placeholder(tf.float64,shape=(None,self._time_size,self._cell_output_size),name='Expected_o')
#creation of the network
initializer = tf.random_uniform_initializer(-1, 1)
cell = tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
rnn_cells = tf.nn.rnn_cell.MultiRNNCell([cell] * self._num_layer)
# network
self._output, out_state = tf.nn.dynamic_rnn(cell=rnn_cells,inputs= self._Input, dtype=tf.float64)
只要我保持我的 hidden_size
值与我的输入占位符的最后一个维度相同,即 _batch_dim
.
但是当它不同时,我总是收到这个错误信息:
ValueError: Dimensions must be equal, but are 8 and X for 'rnn/while/rnn/multi_rnn_cell/cell_0/cell_0/gru_cell/MatMul_2' (op: 'MatMul') with input shapes: [?,Y], [X,Y].
其中 X
是我为 hidden_size + 1
设置的值,Y
是 hidden_size*2
的值。我尝试了很多 hidden_size
的值,这两个数字 X
和 Y
每次都会出现。消息错误表明错误发生在tf.rnn.dynamic_rnn
的调用过程中。
更改您的代码...
cell = tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
rnn_cells = tf.nn.rnn_cell.MultiRNNCell([cell] * self._num_layer)
至...
layers = [tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
for _ in self._num_layer]
rnn_cells = tf.nn.rnn_cell.MultiRNNCell(layers)
...更深的 GRU 层将能够适应较早层的输出。