如何使用'backend.print_tensor'检查Keras张量的值?

时间:2019-05-19 19:15:22

标签: python keras

我想检查我的Keras张量的一些值。我尝试使用>>> import signal >>> import sys >>> def sigint_handler(signal, frame): ... print('interrupted') ... sys.exit(0) ... signal.signal(signal.SIGINT, signal_handler) File "<stdin>", line 4 signal.signal(signal.SIGINT, signal_handler) ^ SyntaxError: invalid syntax

我更改了Keras的包裹代码,并更改了代码backend.print_tensor-> tf.Print

tf.print

此消息发生。

  

警告:
  不推荐使用tensorflow.python.ops.logging_ops中的打印,并将在2018-08-20之后删除。
  更新说明:
  使用tf.print而不是tf.Print。请注意,tf.print返回一个无输出运算符,该运算符直接打印输出。在defuns或eager模式之外,除非在session.run中直接指定该运算符或将其用作其他运算符的控件依赖项,否则不会执行该运算符。这仅是图形模式下的问题。以下是如何确保tf.print在图形模式下执行的示例:

x = Dozat(21)(x) # custom Lambda layer

x = backend.print_tensor(x)

print('x : ', x, '\n\n\n')

1 个答案:

答案 0 :(得分:0)

您的变量out是在with块中定义的,但是您试图在定义它的块之外运行它。尝试将sess.run(out)缩进到有效位置。

sess = tf.Session()
with sess.as_default():
    tensor = tf.range(10)
    print_op = tf.print(tensor)
    with tf.control_dependencies([print_op]):
      out = tf.add(tensor, tensor)
      sess.run(out)