syz*_*ygy 3 gradient tensorflow
我试图在两台机器上拆分最小化功能.在一台机器上,我称之为"compute_gradients",在另一台机器上,我称之为"apply_gradients",其中包含通过网络发送的渐变.问题是,无论我做什么,调用apply_gradients(...).run(feed_dict)似乎都不起作用.我试过插入占位符代替apply_gradients的张量渐变,
variables = [W_conv1, b_conv1, W_conv2, b_conv2, W_fc1, b_fc1, W_fc2, b_fc2]
loss = -tf.reduce_sum(y_ * tf.log(y_conv))
optimizer = tf.train.AdamOptimizer(1e-4)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
compute_gradients = optimizer.compute_gradients(loss, variables)
placeholder_gradients = []
for grad_var in compute_gradients:
placeholder_gradients.append((tf.placeholder('float', shape=grad_var[1].get_shape()) ,grad_var[1]))
apply_gradients = optimizer.apply_gradients(placeholder_gradients)
Run Code Online (Sandbox Code Playgroud)
然后当我收到我打电话的渐变时
feed_dict = {}
for i, grad_var in enumerate(compute_gradients):
feed_dict[placeholder_gradients[i][0]] = tf.convert_to_tensor(gradients[i])
apply_gradients.run(feed_dict=feed_dict)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我明白了
ValueError:使用序列设置数组元素.
这只是我尝试过的最新内容,我也尝试了没有占位符的相同解决方案,以及等待创建apply_gradients操作,直到我收到渐变,这会导致不匹配的图形错误.
我应该采取哪些方向帮助?
假设每个gradients[i]都是你使用一些带外机制获取的NumPy数组,修复只是tf.convert_to_tensor()在构建时删除调用feed_dict:
feed_dict = {}
for i, grad_var in enumerate(compute_gradients):
feed_dict[placeholder_gradients[i][0]] = gradients[i]
apply_gradients.run(feed_dict=feed_dict)
Run Code Online (Sandbox Code Playgroud)
a中的每个值都feed_dict应该是NumPy数组(或者其他一些可以简单地转换为NumPy数组的对象).特别是,a tf.Tensor不是a的有效值feed_dict.
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |