【发布时间】:2020-06-12 00:05:29
【问题描述】:
在尝试运行以下代码时(我已将数据替换为 1、2、3... 数字以使问题可重现)
x_train = np.array([[1,2,3,4,5,6,7,8,9,10]]*1000).astype("float32")
y_train = np.asarray([1.0]*1000).astype("float32")
model = tf.keras.models.Sequential([
tf.keras.layers.Input(shape=(10,)),
tf.keras.layers.Dense(128,activation='relu'),
tf.keras.layers.Dense(128,activation='relu'),
tf.keras.layers.Dense(1, activation='softmax')
])
model.compile(
loss=tf.keras.losses.MeanSquaredError,
optimizer=tf.keras.optimizers.Adam(0.001),
metrics=['mae'],
)
model.fit(x=x_train,y=y_train,epochs=5)
我从最后一行得到TypeError: Expected float32 passed to parameter 'y' of op 'Equal', got 'auto' of type 'str' instead. Error: Expected float32, got 'auto' of type 'str' instead.。
错误信息有点无意义,因为没有字符串,所以我的问题是:
- 发生了什么事?
- 如何克服这个问题并适应模型中代码中指定的
x_train,y_train?
【问题讨论】:
-
你没有正确传递损失,MeanSquaredError 是一个类,你应该创建它的一个实例(如 loss=tf.keras.losses.MeanSquaredError())
-
@史诺比博士,是的!我想你是正确的。我可以按照你的建议进行训练。请张贴作为答案。
标签: python tensorflow keras tf.keras