如何得到张量流2中Keras张量的值?

2024-10-04 01:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

TF1有sess.run()和{}来获得张量的值,而Keras有{};现在,两者的工作原理都不一样(前两个根本不一样)。在

K.eager(K.get_value)(tensor)似乎通过退出Keras图而在Keras图中工作,而{}则在该图之外工作,这两个都是w/tf的默认值(在前者中,关闭)。但是,如果tensor是一个Keras后端操作,则此操作将失败:

import keras.backend as K
def tensor_info(x):
    print(x)
    print("Type: %s" % type(x))
    try:        
        x_value = K.get_value(x)
    except:
        try:    x_value = K.eager(K.get_value)(x)
        except: x_value = x.numpy()
    print("Value: %s" % x_value)  # three methods

ones = K.ones(1)
ones_sqrt = K.sqrt(ones)

tensor_info(ones); print()
tensor_info(ones_sqrt)
^{pr2}$
AttributeError: 'Tensor' object has no attribute 'numpy' 


这在TF<;2.0中是没有问题的。Github一直保持沉默。我知道将代码重写为一种解决方案的方法,但是它将消除Keras的后端中立性,并且工作类似于tf.keras。有没有办法在TensorFlow2.0中获得Keras2.3张量值,同时保持后端中立性?

Tags: infonumpygetvaluetfonessqrtkeras