自定义层需要将tf.keras.input空张量更改为numpy ndarray-'Tensor'对象没有属性'numpy'错误

时间:2019-11-03 23:19:23

标签: python tensorflow python-3.7 tensorflow2.0 tf.keras

我编写了一个tf.keras自定义层,在其中使用了一些仅适用于numpy数组的函数,因此,当我尝试在带有tf.keras.Input的模型中使用该层时,函数会引发错误:input data must be a numpy ndarray.

tf.keras.backend.eval(x)x.numpy()都导致错误:'Tensor' object has no attribute 'numpy',即使启用了急切执行。

使用sess = tf.compat.v1.Session()sess.run(x)给出:会话图为空。在调用run()

之前向图形添加操作

这是我正在测试的样本模型:

inputs = keras.Input(shape=(48,48,1))
x = keras.layers.Conv2D(64, (3,3), padding='same', activation='relu')(inputs)

# y = tf.keras.backend.eval(x)

# init_op = tf.compat.v1.global_variables_initializer()
# with tf.compat.v1.Session() as sess:
#    sess.run(init_op)
#    y = sess.run(x)

# y = x.numpy()

z = Mylayer.My_custom_layer()(y)
outputs = z
model = keras.Model(inputs=inputs, outputs=outputs)

注释行是我测试过的。

无论如何,在进入自定义层之前,我是否可以将此张量输入转换为numpy数组?

1 个答案:

答案 0 :(得分:0)

我认为您不能使用numpy函数在Keras或TensorFlow中创建计算图。您应该使用来自tensorflow或keras的相同内置函数。你能给你的costumeLayer代码吗?