【问题标题】:What does it mean when the test scores are more than 100?考试成绩超过100分是什么意思?
【发布时间】:2021-04-04 19:01:46
【问题描述】:

我在测试集上测试时创建的 MLP 多次显示测试分数超过 100。会不会是编码或者输入的数据有错误?

我的代码:

model = Sequential()
model.add(Dense(3, input_dim = 6))
model.add(Dense(3, activation='tanh'))
model.add(Dense(1))
opt = optimizers.Adam(learning_rate=0.01)

model.compile(optimizer=opt , loss='mean_squared_error')

model.fit(x, y, epochs=ep, batch_size = 50 ,verbose=0)
test_score = model.evaluate(test_x, test_y, verbose = 0)
test_score = sqrt(test_score)
test_score = get_unscaled (test_sf, np.array([test_score]))

【问题讨论】:

  • 为什么分数不能高于100?
  • @mkrieger1 所以它不像 100 是最大值.. 最准确?
  • 我不知道。也许最大值是500?还是没有最大值?
  • @mkrieger1 你看here 按照这个回答,最大值应该是百吧?

标签: python neural-network mlp


【解决方案1】:

model.evaluate 可以返回两种类型的值:

  • 标量:如果您没有将值显式传递给metric 属性到model.compile,它只返回损失(如果是均方误差,则可以是任何非负实数)。
  • 标量列表:如果您已将指标传递给model.compilemodel.evaluate 返回标量列表,第一个元素是损失,所有其他元素都是您传递的指标的值。

为了简单地解决您的问题,请将您所需的指标(例如准确度)传递给 model.compile,例如 model.compile(optimizer=opt, loss='mean_squared_error', metrics=['accuracy'])。然后运行model.evaluate 将返回[loss, accuracy]。参考this

在开始编码之前,您需要了解自己在做什么。您似乎不清楚均方误差的含义。请先阅读理论和 Keras documentation

【讨论】:

  • 对不起!我是初学者。只是澄清这里的错误是测试分数计算不正确。我使用损失而不是准确度来计算它们。我说的对吗?
  • 是的,没错。您过去的上限为 100 的损失函数没有任何限制。
猜你喜欢
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 2016-03-12
  • 2017-10-31
  • 2011-04-21
相关资源
最近更新 更多