- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过优化随机“图像”来可视化 CNN 过滤器,以便它在该过滤器上产生高平均激活,这在某种程度上类似于神经风格转移算法。
为此,我使用 TensorFlow==2.2.0-rc。但是在优化的过程中,报错说'tensorflow.python.framework.ops.EagerTensor' object has no attribute '_in_graph_mode'
.我尝试调试它,当我不使用 opt.apply_gradients()
时它以某种方式工作。而是手动应用它的渐变,如 img = img - lr * grads
但我想使用“亚当”优化器而不是简单的 SGD。
这是我的优化部分代码
opt = tf.optimizers.Adam(learning_rate=lr, decay = 1e-6)
for _ in range(epoch):
with tf.GradientTape() as tape:
tape.watch(img)
y = model(img)[:, :, :, filter]
loss = -tf.math.reduce_mean(y)
grads = tape.gradient(loss, img)
opt.apply_gradients(zip([grads], [img]))
最佳答案
错误的原因是 tf.keras 优化器将梯度应用于变量对象(tf.Variable 类型),而您尝试将梯度应用于张量(tf.Tensor 类型)。张量对象在 TensorFlow 中不可变,因此优化器无法对其应用梯度。
您应该初始化变量 img
作为 tf.Variable。这就是你的代码应该是这样的:
# NOTE: The original image is lost here. If this is not desired, then you can
# rename the variable to something like img_var.
img = tf.Variable(img)
opt = tf.optimizers.Adam(learning_rate=lr, decay = 1e-6)
for _ in range(epoch):
with tf.GradientTape() as tape:
tape.watch(img)
y = model(img.value())[:, :, :, filter]
loss = -tf.math.reduce_mean(y)
grads = tape.gradient(loss, img)
opt.apply_gradients(zip([grads], [img]))
y = model(img)[:, :, :, filter]
至
y = model(img.value())[:, :, :, filter]
.这是因为 tf.keras 模型需要张量作为输入,而不是变量(错误或特征?)。
关于python - 'tensorflow.python.framework.ops.EagerTensor' 对象没有属性 '_in_graph_mode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61166864/
在我的代码中,我想检查返回的对象类型是否为 EagerTensor : import tensorflow as tf import inspect if __name__ == '__main__'
如果变量是 eagertensors,如何更新 keras 顺序模型 (model.variables) 中的变量?当我尝试分配给它们时,我收到一条错误,指出该对象没有属性“分配”。 最佳答案 “张量
使用 Tensorflow 2.0 alpha,当我尝试创建一个 tf.data.Dataset 使用以下数据: Inspect the complete dataset on Kaggle 显然,存
使用标准 Tensorflow: import tensorflow as tf x = tf.convert_to_tensor([0,1,2,3,4], dtype=tf.int64) y = x
我按照建议的 by Google's tensor2tensor repository 遵循了翻译 colab notebook 教程 导出模型并将其上传到 Google 的 AI Platform
我创建了一个包含 27 列的数据集。我创建了一个 Autoencoder 用于异常检测,如下所示: input_layer = Input(shape=(27,)) x = layers.Dense(
我试图通过优化随机“图像”来可视化 CNN 过滤器,以便它在该过滤器上产生高平均激活,这在某种程度上类似于神经风格转移算法。 为此,我使用 TensorFlow==2.2.0-rc。但是在优化的过程中
我用 tf.data.datset API 并使用残差网络。当我为 TensorBoard 运行代码以可视化我的嵌入时,我遇到了这个错误,但是当我使用两层网络时,我没有这个问题。 def load_a
在 Tensorflow 2.0 中,我们看到的主要“张量”实际上是 EagerTensors ( tensorflow.python.framework.ops.EagerTensor 更准确地说)
我正在尝试在 Windows 上遵循 TensorFlow 教程: https://www.tensorflow.org/tutorials/eager/custom_training_walkthr
我在 python 3.7、Ubuntu 16.04 上使用 tensorflow。抛出上述错误的代码写在下面。它基于以下code .我在 tensorflow 1.13 和 2.0.0-beta1
我在学习TensorFlow 2.0和Transformer,打字的时候出现标题错误 value = Embedding(tf.shape(vocals).numpy()[0], d_model=51
我正在使用 Tensorflow 2.0,并试图更新我的张量中的切片。 使用像 PyTorch 中的普通项目分配,它不起作用。 import tensorflow as tf tensor = tf.
我是一名优秀的程序员,十分优秀!