nes*_*boy 5 python numpy tensorflow
这是一个非常简单的问题,我似乎无法弄清楚.我正在使用一个形状的输出张量[100,250].我希望能够在百位的任何位置访问250维数组并单独修改它们.我发现的tensorflow数学工具要么对整个张量进行元素修改或标量修改.但是,我试图对张量的子集进行标量修改.
编辑:
这是我想用tensorflow方法重新创建的numpy代码:
update = sess.run(y, feed_dict={x: batch_xs})
for i in range(len(update)):
update[i] = update[i]/np.sqrt(np.sum(np.square(update[i])))
update[i] = update[i] * magnitude
Run Code Online (Sandbox Code Playgroud)
这个for循环遵循250-D而不是3-D的公式
.然后,我将每个单位向量乘以幅度,将其重新塑造成我想要的长度.
所以这里更新是numpy [100,250]维输出.我想将每个250维向量转换为其单位向量.这样我就可以将其长度改为我选择的幅度.使用这个numpy代码,如果我运行我的train_step并将update传递给我的一个占位符
sess.run(train_step, feed_dict={x: batch_xs, prediction: output})
Run Code Online (Sandbox Code Playgroud)
它返回错误:
No gradients provided for any variable
Run Code Online (Sandbox Code Playgroud)
这是因为我在numpy中完成了数学运算并将其移植回tensorflow. 这是一个相关的stackoverflow问题,没有得到解答.
该tf.nn.l2_normalize非常接近我所期待的,但是它也把通过的平方根的最大平方和.而我试图将每个向量除以它自己的平方和.
谢谢!
这里没有真正的诀窍,你可以像numpy那样做.
唯一要确保的是它norm
的形状,[100, 1]
以便在分区中播放得很好x / norm
.
x = tf.ones([100, 250])
norm = tf.sqrt(tf.reduce_sum(tf.square(x), axis=1, keepdims=True))
assert norm.shape == [100, 1]
res = x / norm
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4034 次 |
最近记录: |