- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想按行更新 tensorflow 中tf.while_loop
内的二维tf.variable
。因此,我使用 tf.assign 方法。问题是我的实现和 parallel_iterations>1
结果是错误的。使用 parallel_iterations=1
结果是正确的。代码是这样的:
a = tf.Variable(tf.zeros([100, 100]), dtype=tf.int64)
i = tf.constant(0)
def condition(i, var):
return tf.less(i, 100)
def body(i, var):
updated_row = method() # This method returns a [1, 100] tensor which is the updated row for the variable
temp = tf.assign(a[i], updated_row)
return [tf.add(i, 1), temp]
z = tf.while_loop(condition, body, [i, a], back_prop=False, parallel_iterations=10)
迭代是完全独立的,我不知道问题是什么。
奇怪的是,如果我像这样更改代码:
a = tf.Variable(tf.zeros([100, 100]), dtype=tf.int64)
i = tf.constant(0)
def condition(i, var):
return tf.less(i, 100)
def body(i, var):
zeros = lambda: tf.zeros([100, 100], dtype=tf.int64)
temp = tf.Variable(initial_value=zeros, dtype=tf.int64)
updated_row = method() # This method returns a [1, 100] tensor which is the updated row for the variable
temp = tf.assign(temp[i], updated_row)
return [tf.add(i, 1), temp]
z = tf.while_loop(condition, body, [i, a], back_prop=False, parallel_iterations=10)
该代码给出了 parallel_iterations>1
的正确结果。有人可以解释一下这里发生了什么,并给我一个有效的解决方案来更新变量,因为我要更新的原始变量很大,而我找到的解决方案效率非常低。
最佳答案
您不需要为此使用变量,您只需在循环体上生成行更新张量即可:
import tensorflow as tf
def method(i):
# Placeholder logic
return tf.cast(tf.range(i, i + 100), tf.float32)
def condition(i, var):
return tf.less(i, 100)
def body(i, var):
# Produce new row
updated_row = method(i)
# Index vector that is 1 only on the row to update
idx = tf.equal(tf.range(tf.shape(a)[0]), i)
idx = tf.cast(idx[:, tf.newaxis], var.dtype)
# Compose the new tensor with the old one and the new row
var_updated = (1 - idx) * var + idx * updated_row
return [tf.add(i, 1), var_updated]
# Start with zeros
a = tf.zeros([100, 100], tf.float32)
i = tf.constant(0)
i_end, a_updated = tf.while_loop(condition, body, [i, a], parallel_iterations=10)
with tf.Session() as sess:
print(sess.run(a_updated))
输出:
[[ 0. 1. 2. ... 97. 98. 99.]
[ 1. 2. 3. ... 98. 99. 100.]
[ 2. 3. 4. ... 99. 100. 101.]
...
[ 97. 98. 99. ... 194. 195. 196.]
[ 98. 99. 100. ... 195. 196. 197.]
[ 99. 100. 101. ... 196. 197. 198.]]
关于python - tf.while_loop 并行运行时给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611575/
在我的问题中,我需要在每个训练步骤的数据中使用 1 个示例运行 GD。众所周知, session.run() 有开销,因此训练模型时间太长。 为了避免开销,我尝试使用 while_loop 并通过一次
我目前很难理解 tensorflow 的工作原理,而且我觉得 python 界面有点晦涩难懂。 我最近尝试在 tf.while_loop 中运行一个简单的 print 语句,但有很多事情我仍然不清楚:
我想按行更新 tensorflow 中tf.while_loop内的二维tf.variable。因此,我使用 tf.assign 方法。问题是我的实现和 parallel_iterations>1 结
我正在使用 tf.while_loop 动态连接张量。 代码 embeds_raw = tf.constant(np.array([ [1, 1], [1, 1], [2, 2
我正在尝试更新嵌套 while_loop() 中的二维张量。但是,当将变量传递给第二个循环时,我无法使用 tf.assign() 更新它,因为它会抛出此错误: ValueError: Sliced a
我在 Tensorflow 中使用 while_loop 来迭代张量并提取给定维度上的特定切片。对于每一步,我都需要使用解码器 RNN 来生成一系列输出符号。我正在使用 tf.contrib.seq2
我已经使用带有大型矩阵的 TensorFlow while_loop 实现了一个算法,我最近注意到奇怪的行为:我在不同的运行中得到不同的结果,有时甚至是 nan 值。我花了一些时间来缩小问题范围,现在
我尝试使用 while_loop 在 Tensorflow ,但是当我尝试返回目标时 输出 从可调用的 while 循环中,它给了我一个错误,因为每次都会增加形状。 输出应包含基于 的(0 或 1)个
只要仍有一些列使用 tf.while_loop,我就会尝试将张量切成小张量。 注意:我使用这种方式是因为我无法在图形构建时(没有 session )循环占位符中的值被视为张量而不是整数。 [ 5 7
在文档中,tf.while_loop 的主体必须是 python 可调用的。 i = tf.constant(0) b = lambda i: tf.add(i,1) c = lambda i: tf
当我尝试运行代码时出现以下错误: model = Sequential() model.add(LSTM(4, input_shape=(1, look_back))) TypeError: whil
我正在使用 while_loop 迭代更新矩阵。对于密集张量,循环运行良好,但是当我使用稀疏张量时,出现以下错误: InvalidArgumentError: Number of rows of a_
目标是在 TensorFlow 中实现一个循环函数,以随时间过滤信号。 input随后呈现为 [batch, in_depth, in_height, in_width, in_channels]
给定一个 TensorFlow tf.while_loop,我如何计算每个时间步的 x_out 相对于网络所有权重的梯度? network_input = tf.placeholder(tf.floa
下面我有一个 Tensorflow RNN Cell 的实现,旨在模拟本文中 Alex Graves 的算法 ACT:http://arxiv.org/abs/1603.08983 . 在通过 rnn
我正在尝试使用 tf.scatter_update() 更新 tf.while_loop() 内的 tf.Variable。但是,结果是初始值而不是更新后的值。这是我想要做的示例代码: from __
我想处理不同形状的张量序列(列表)并输出另一个张量列表。考虑每个时间戳上具有不同隐藏状态大小的 RNN。类似的东西 输入:[tf.ones((1, 2, 2)), tf.ones((2, 2, 3))
我有一个 tensorflow 模型,其中层的输出是二维张量,例如 t = [[1,2], [3,4]] . 下一层需要一个由该张量的每一行组合组成的输入。也就是说,我需要把它变成t_new = [[
重现步骤 我正在使用TensorFlow实现一个需要使用tf.while_loop()的网络 import tensorflow as tf import numpy as np class mode
我最初使用 glfw 编写我的游戏。然而,由于它缺乏 android 的可移植性,我不得不用 SDL 替换我所有的 glfw 代码,因为 SDL 更具可移植性。 我使用 glfw 框架工作的原始游戏循
我是一名优秀的程序员,十分优秀!