如何在TensorFlow 2 Eager中获得learning_phase?

霸王龙

K.learning_phase()获取值,而不是张量本身。我需要学习阶段张量以K.function获取图层梯度,输出等。w /可以正常工作import keras.backend as K,但对于则失败import tensorflow.keras.backend as K相关的Git /部分解决方法

我如何获取张量本身?


可重现的示例

import tensorflow.keras.backend as K
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
import numpy as np

ipt = Input((16,))
out = Dense(16)(ipt)
model = Model(ipt, out)
model.compile('adam', 'mse')

x = np.random.randn(32, 16)
model.train_on_batch(x, x)

grads = model.optimizer.get_gradients(model.total_loss, model.layers[-1].output)
grads_fn = K.function(inputs=[model.inputs[0], model._feed_targets[0], K.learning_phase()], 
                      outputs=grads)

完整的错误跟踪

File "<ipython-input-2-7f74922d7492>", line 3, in <module>
  outputs=grads)
File "D:\Anaconda\envs\tf2_env\lib\site-packages\tensorflow_core\python\keras\backend.py", line 3773, in function
  return EagerExecutionFunction(inputs, outputs, updates=updates, name=name)
File "D:\Anaconda\envs\tf2_env\lib\site-packages\tensorflow_core\python\keras\backend.py", line 3670, in __init__
  base_graph=source_graph)
File "D:\Anaconda\envs\tf2_env\lib\site-packages\tensorflow_core\python\eager\lift_to_graph.py", line 249, in lift_to_graph
  visited_ops = set([x.op for x in sources])
File "D:\Anaconda\envs\tf2_env\lib\site-packages\tensorflow_core\python\eager\lift_to_graph.py", line 249, in <listcomp>
  visited_ops = set([x.op for x in sources])

AttributeError: 'int' object has no attribute 'op'
今天

作为一种(不太好的)解决方法,您可以使用symbolic_learning_phase()from tensorflow.python.keras.backend

from tensorflow.python.keras import backend

# ...
grads_fn = K.function(inputs=[model.inputs[0],
                              model._feed_targets[0],
                              backend.symbolic_learning_phase()], 
                      outputs=grads)

g_learning = grads_fn([x, x, True])
g_not_learning = grads_fn([x, x, False])

我不确定为什么没有将此功能learning_phase()导出到中tensorflow.keras.backend也许有充分的理由不这样做。

此外,请注意,仅当您的模型包含一些在训练和推理模式下表现不同(例如,辍学)的图层/操作时,才在此处使用学习阶段才有意义。否则,函数的输出将相同。


Updatebackend.symbolic_learning_phase()用于tensorflow.keras代码中(示例),建议不要过多地公开使用它。它用作K.learning_phase()Eager执行中的直接替代品,将在中使用K.function()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用learning_phase在TF 2.3 Eager中获得中间输出?

来自分类Dev

如何在TensorFlow 2中获得Keras张量的值?

来自分类Dev

如何在tensorflow中为word2vec模型提供特定的单词

来自分类Dev

如何在tensorflow2.0中导入'tf.contrib.seq2seq.dynamic_decoder'?

来自分类Dev

如何在预训练的TensorFlow 2模型中访问和可视化权重?

来自分类Dev

如何在Jupyter中将TensorFlow 2模型的结果保存到文本文件中?

来自分类Dev

如何在Tensorflow 2中解码示例(从1.12版本移植)

来自分类Dev

我如何在Tensorflow 2 LSTM培训中屏蔽多输出?

来自分类Dev

如何在Tensorflow 2中实现小批量梯度下降?

来自分类Dev

如何在Tensorflow Object Detection API v2中同时训练和评估

来自分类Dev

如何在Tensorflow 2.x中打印准确性和其他指标?

来自分类Dev

如何在Keras中找到预训练的InceptionResNetV2模型不同层中的激活形状-Tensorflow 2.0

来自分类Dev

如何在tensorflow2中制作这样的数据集:<PrefetchDataset形状:((),()),类型:(tf.string,tf.string)>

来自分类Dev

如何在Tensorflow 2.0中获得张量值?

来自分类Dev

如何在TensorFlow中获得不规则形状的参数

来自分类Dev

如何在TF 2.2 Eager中获得渐变?

来自分类Dev

如何在Tensorflow中实现重量噪声

来自分类Dev

如何在tensorflow中列出图中的变量?

来自分类Dev

Tensorflow:如何在张量中修改值

来自分类Dev

如何在Tensorflow中打印标志描述?

来自分类Dev

如何在TensorFlow中重复未知尺寸

来自分类Dev

如何在TensorFlow中获取日志概率?

来自分类Dev

如何在Tensorflow 2.0中累积梯度?

来自分类Dev

如何在Tensorflow中编写LabelEncoder?

来自分类Dev

如何在TensorFlow中定义变量

来自分类Dev

如何在Tensorflow 2.0中管理队列?

来自分类Dev

Tensorflow:如何在张量中修改值

来自分类Dev

如何在 TensorFlow 中测试各个层?

来自分类Dev

如何在 tensorflow 中实现 BesselJ 函数

Related 相关文章

  1. 1

    如何使用learning_phase在TF 2.3 Eager中获得中间输出?

  2. 2

    如何在TensorFlow 2中获得Keras张量的值?

  3. 3

    如何在tensorflow中为word2vec模型提供特定的单词

  4. 4

    如何在tensorflow2.0中导入'tf.contrib.seq2seq.dynamic_decoder'?

  5. 5

    如何在预训练的TensorFlow 2模型中访问和可视化权重?

  6. 6

    如何在Jupyter中将TensorFlow 2模型的结果保存到文本文件中?

  7. 7

    如何在Tensorflow 2中解码示例(从1.12版本移植)

  8. 8

    我如何在Tensorflow 2 LSTM培训中屏蔽多输出?

  9. 9

    如何在Tensorflow 2中实现小批量梯度下降?

  10. 10

    如何在Tensorflow Object Detection API v2中同时训练和评估

  11. 11

    如何在Tensorflow 2.x中打印准确性和其他指标?

  12. 12

    如何在Keras中找到预训练的InceptionResNetV2模型不同层中的激活形状-Tensorflow 2.0

  13. 13

    如何在tensorflow2中制作这样的数据集:<PrefetchDataset形状:((),()),类型:(tf.string,tf.string)>

  14. 14

    如何在Tensorflow 2.0中获得张量值?

  15. 15

    如何在TensorFlow中获得不规则形状的参数

  16. 16

    如何在TF 2.2 Eager中获得渐变?

  17. 17

    如何在Tensorflow中实现重量噪声

  18. 18

    如何在tensorflow中列出图中的变量?

  19. 19

    Tensorflow:如何在张量中修改值

  20. 20

    如何在Tensorflow中打印标志描述?

  21. 21

    如何在TensorFlow中重复未知尺寸

  22. 22

    如何在TensorFlow中获取日志概率?

  23. 23

    如何在Tensorflow 2.0中累积梯度?

  24. 24

    如何在Tensorflow中编写LabelEncoder?

  25. 25

    如何在TensorFlow中定义变量

  26. 26

    如何在Tensorflow 2.0中管理队列?

  27. 27

    Tensorflow:如何在张量中修改值

  28. 28

    如何在 TensorFlow 中测试各个层?

  29. 29

    如何在 tensorflow 中实现 BesselJ 函数

热门标签

归档