【问题标题】:Tensorflow regression neural network outputting the same number for everythingTensorFlow 回归神经网络为所有内容输出相同的数字
【发布时间】:2019-12-02 03:22:54
【问题描述】:

我创建了一个非常简单的回归模型,可以训练黑白图像和 0.5-10 之间的相应标签。在训练预测标签时,它总是收敛到一个模型,该模型为所有内容输出相同的数字,该数字看起来最有可能是所有标签的平均值。我的模型有什么东西在创造这个吗?我的代码:

from __future__ import absolute_import, division, print_function

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

(train_images, train_labels), (test_images, test_labels) = np.load("dataset.npy", allow_pickle=True)

train_labels = list(map(float, train_labels))
test_labels = list(map(float, test_labels))
train_labels = [int(i) for i in train_labels]
test_labels = [int(i) for i in test_labels]

print(train_labels)

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(128, 128)),
    keras.layers.Dense(64, activation=tf.nn.relu),
    keras.layers.Dense(1)
  ])

model.compile(loss='mean_squared_error',
    optimizer='adam',
    metrics=['mean_absolute_error', 'mean_squared_error'])

model.fit(train_images, train_labels, epochs=1000)

predictions = model.predict(test_images)

for i in range(103):
    print("%s: %s" % (test_labels[i], predictions[i]))

【问题讨论】:

  • 您有多少数据样本?由于您使用平均绝对误差,神经网络,如果它预测所有输出值的平均值,那么损失会自动降低到 50%。您是否对数据和输出进行了规范化?
  • 它基本上表明您的模型无法学习任何东西。可能有很多可能的原因。但您可以先尝试使用Conv2d 层而不是FlattenDense 层。
  • 我有 410 个数据点,分为 328 个用于训练和 82 个用于测试。通过规范化,您的意思是在 0 和 1 之间进行映射吗?如果是这样,不,我没有。我应该吗?
  • @meowongac 我使用了 conv2d 和池化层,它的学习似乎相当一致,但仍然只学习输出相同的数字。
  • 在您的示例中,首先尝试使用不同的激活函数 - 'relu' 往往会当场失效,Dense(64) 在 1000 个时期后的输出也可能为零。然后你会得到一个偏置值Dense(1)。另外,请绘制并显示标签的分布。

标签: python tensorflow machine-learning keras regression


【解决方案1】:

处理图像时的一个关键步骤是标准化图像值。它有助于平滑优化和梯度更新,还可以帮助您的模型更好更快地收敛。有多种方法可以做到这一点,但其中一种简单的归一化方案是将图像像素的值除以 255(不要忘记图像像素的值通常在 [0,255] 范围内,因此将它们除以 255 会使它们落在 [0,1] 范围内):

train_images = train_images.astype('float32') / 255.0
test_images = test_images.astype('float32') / 255.0

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 2018-03-26
    • 2016-08-13
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2019-07-14
    • 2019-01-27
    • 2023-03-16
    相关资源
    最近更新 更多