- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
给定一个 TensorFlow tf.while_loop
,我如何计算每个时间步的 x_out
相对于网络所有权重的梯度?
network_input = tf.placeholder(tf.float32, [None])
steps = tf.constant(0.0)
weight_0 = tf.Variable(1.0)
layer_1 = network_input * weight_0
def condition(steps, x):
return steps <= 5
def loop(steps, x_in):
weight_1 = tf.Variable(1.0)
x_out = x_in * weight_1
steps += 1
return [steps, x_out]
_, x_final = tf.while_loop(
condition,
loop,
[steps, layer_1]
)
一些笔记
tf.gradients(x, tf.trainable_variables())
崩溃并出现 AttributeError: 'WhileContext' object has no attribute 'pred'
。似乎在循环中使用 tf.gradients
的唯一可能性是计算关于 weight_1
的梯度和 x_in
的当前值/仅时间步长,不通过时间反向传播。最佳答案
在基于this 的 Tensorflow 中,您永远不能在 tf.while_loop
中调用 tf.gradients
和 this ,当我尝试将共轭梯度下降完全创建到 Tensorflow
图中时,我发现了这一点。
但是如果我正确理解你的模型,你可以制作你自己的 RNNCell
版本并将其包装在 tf.dynamic_rnn
中,但实际的单元格 实现会有点复杂,因为您需要在运行时动态评估条件。
初学者可以看看Tensorflow的dynamic_rnn
代码here .
或者,动态图从来都不是 Tensorflow
的强项,因此请考虑使用其他框架,例如 PyTorch
或者您可以试用 eager_execution
看看是否有帮助。
关于python - 为 tf.while_loop 的每个时间步计算梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49555016/
在我的问题中,我需要在每个训练步骤的数据中使用 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 框架工作的原始游戏循
我是一名优秀的程序员,十分优秀!