【问题标题】:Weird error when trying to use training data尝试使用训练数据时出现奇怪的错误
【发布时间】: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.

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

  1. 发生了什么事?
  2. 如何克服这个问题并适应模型中代码中指定的x_train,y_train

【问题讨论】:

  • 你没有正确传递损失,MeanSquaredError 是一个类,你应该创建它的一个实例(如 loss=tf.keras.losses.MeanSquaredError())
  • @史诺比博士,是的!我想你是正确的。我可以按照你的建议进行训练。请张贴作为答案。

标签: python tensorflow keras tf.keras


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2019-09-22
    • 2018-08-11
    • 2014-06-10
    • 2023-03-07
    • 2020-12-27
    • 2019-12-15
    相关资源
    最近更新 更多