返回信息流问题如下:
现在在我的网络中需要训练两个RNN,我是这样做的,我定义了两个完全一样的RNN网络,只是变量、函数名字有差别:
def RNN(X,w, b):
lstm_cell = rnn_cell.BasicLSTMCell(w, forget_bias=1.0)
outputs, states = rnn.rnn(lstm_cell, X)
return tf.matmul(outputs[-1], w['out']) + b['out']
def RNN2(X2,w2, b2):
lstm_cell = rnn_cell.BasicLSTMCell(w2, forget_bias=1.0)
outputs2, states2 = rnn.rnn(lstm_cell, X2)
return tf.matmul(outputs2[-1], w2['out']) + b2['out']
调试的时候发现,第一个def RNN(X,w, b)没有问题,可是到了第二个def RNN2(X2,w2, b2)会报错:
ValueError: Variable RNN/BasicLSTMCell/Linear/Matrix already exists, disallowed. Did you mean to set reuse=True in VarScope?
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #23967同步于 2017/5/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
【讨论】【问题】tensorflow实现RNN网络遇到的问题
moses
2017/5/2镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
我也查到了是由于变量命名空间的问题,
只是现在不知道怎么去弄变量命名空间,怎么修改函数
【 在 jaegerstar 的大作中提到: 】
: 最好用tf.variable_scope弄好你的变量命名空间
LZ你的错误跟定义RNN没有关系,而是跟你定义变量有关系。
按你的描述我感觉应该是这样的:
```python
with tf.variable_scope('rnn1') as scope:
w1, b1 = ... # 初始化变量, tf.get_variable()什么的
with tf.variable_scope('rnn2') as scope:
w2, b2 = ... # 同上
rnn1 = RNN(X, w1, b1)
rnn2 = RNN(X, w2, b2)
```
【 在 moses 的大作中提到: 】
: 问题如下:
: 现在在我的网络中需要训练两个RNN,我是这样做的,我定义了两个完全一样的RNN网络,只是变量、函数名字有差别:
: def RNN(X,w, b):
: ...................
你现在的`RNN`和`RNN2`是一模一样的函数,在函数里面改变变量名字对变量并没有什么作用..
【 在 moses 的大作中提到: 】
: 问题如下:
: 现在在我的网络中需要训练两个RNN,我是这样做的,我定义了两个完全一样的RNN网络,只是变量、函数名字有差别:
: def RNN(X,w, b):
: ...................
恩恩,你说的是对的。
我昨天已经弄好了,就是得这样分开声明作用域
【 在 LayneH 的大作中提到: 】
: [md]
: LZ你的错误跟定义RNN没有关系,而是跟你定义变量有关系。
: 按你的描述我感觉应该是这样的:
: ...................