我编写了一个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
数组?
答案 0 :(得分:0)
我认为您不能使用numpy函数在Keras或TensorFlow中创建计算图。您应该使用来自tensorflow或keras的相同内置函数。你能给你的costumeLayer代码吗?