Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow(Keras API)`model.fit`method returns";无法转换类型为<;的对象;类别';元组'&燃气轮机;“到张量”;错误_Python_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python Tensorflow(Keras API)`model.fit`method returns";无法转换类型为<;的对象;类别';元组'&燃气轮机;“到张量”;错误

Python Tensorflow(Keras API)`model.fit`method returns";无法转换类型为<;的对象;类别';元组'&燃气轮机;“到张量”;错误,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我正在按照tf.random.normal方法使用高斯噪声(或通过kerasAPI使用K.random\u normal) 它在自定义tensorflow层中使用,而自定义模型则使用该层 出于某种原因,当直接调用层/模型时,或通过tf.GradientTape()使用自定义训练循环时,一切都按预期工作,但当尝试使用fit方法时,它会抛出一个令人费解的错误 它似乎与推断批处理维度有关,在调用fit方法时,批处理维度显示为None 我怀疑这与编译和符号张量与渴望张量有关,但我并不知道如何解决这个问题

我正在按照
tf.random.normal
方法使用高斯噪声(或通过
keras
API使用
K.random\u normal

它在自定义
tensorflow
中使用,而自定义
模型
则使用该层

出于某种原因,当直接调用层/模型时,或通过
tf.GradientTape()
使用自定义训练循环时,一切都按预期工作,但当尝试使用
fit
方法时,它会抛出一个令人费解的错误

它似乎与推断批处理维度有关,在调用
fit
方法时,批处理维度显示为
None

我怀疑这与编译和符号张量与渴望张量有关,但我并不知道如何解决这个问题

我试图将问题归结为一个再现问题的最小示例:

将numpy导入为np
将tensorflow.keras.backend作为K导入
来自tensorflow.keras导入模型
导入tensorflow作为tf
课堂演示(models.Model):
定义初始化(自):
super()。\uuuu init\uuuuu()
def呼叫(自我、输入、培训=无、掩码=无):
#批处理在直接调用或通过GradientTape()调用时给出“2”
#通过fit调用时提供“无”
批次=K.int_形状(输入)[0]
尺寸=K.int_形状(输入)[1]
噪声=tf.随机.正常(形状=(批次,尺寸),平均值=0.0,标准差=1.0)
#手动指定批次维度确实有效,例如。
#噪声=tf.随机.正常(形状=(2,尺寸),平均值=0.0,标准差=1.0)
返回输入*噪声
测试数据=np.数组([[1,2,3,4.],[5,6,7,8.]))
tester=Demo()
编译(优化器='adam')
#人工呼叫工作
打印(测试数据-测试仪(测试数据))
#但称之为“健康”并不重要
tester.fit(x=测试数据)
#引发:TypeError:无法将类型的对象转换为Tensor。
#内容:(无,4)。将铸造元素考虑为支持类型。

有什么问题的建议吗?

调用
方法中,不要使用
keras.backend
获取
批处理
dim
,直接使用tensorflow

batch = tf.shape(inputs)[0]
dim = tf.shape(inputs)[1]