Python tf.nn.dynamic\n的值错误:维度必须相等
我想使用tensorflow的Python tf.nn.dynamic\n的值错误:维度必须相等,python,tensorflow,machine-learning,lstm,recurrent-neural-network,Python,Tensorflow,Machine Learning,Lstm,Recurrent Neural Network,我想使用tensorflow的tf.nn.dynamic\u 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.
tf.nn.dynamic\u 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)
只要我保持我的隐藏大小
值与输入占位符的最后一个维度相同,即\u batch\u dim
,一切正常
但当情况不同时,我总是会收到这样的错误信息:
ValueError:尺寸必须相等,但为8和X表示
“rnn/while/rnn/multi_rnn_cell/cell_0/cell_0/gru_cell/MatMul_2”(作品:
“MatMul”)和输入形状:[?,Y],[X,Y]
其中,
X
是我为我的hidden_size+1
输入的值,Y
是hidden_size*2
的值。我尝试了许多hidden\u size
的值,这两个数字,X
和Y
每次都会出现。消息error表示调用tf.rnn.dynamic\u rnn
时发生错误 更改您的代码,从
cell=tf.nn.rnn\u cell.GRUCell(self.\u hidden\u size,kernel\u initializer=initializer)
rnn_cells=tf.nn.rnn_cell.multirncell([cell]*self.\u num_layer)
到
layers=[tf.nn.rnn\u cell.GRUCell(self.\u hidden\u size,kernel\u initializer=initializer)
对于u in self._num_layer]
rnn_单元=tf.nn.rnn_单元.multirncell(层)
。。。更深的GRU层将能够适应早期层的输出。请提供一个。谢谢这是解决方案,但您只需添加范围(self.\u num\u layer),因为self.\u num\u layer在我的case@yohansebmoc哦,事实上,忘记了
范围。谢谢你发现了