首页 > 解决方案 > 尝试使用训练数据时出现奇怪的错误

问题描述

尝试运行以下代码时(我已将数据替换为 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.从最后一行被抛出。

错误消息有点毫无意义,因为没有字符串,所以我的问题是:

  1. 这是怎么回事?
  2. 如何克服这个和 fit x_trainy_train在模型的代码中指定?

标签: pythontensorflowkerastf.keras

解决方案


不要忘记实例化您的损失:)

tf.keras.losses.MeanSquaredError() # put parentheses

推荐阅读