【问题标题】:Model predicts negative values as zeros模型将负值预测为零
【发布时间】:2020-03-22 16:30:33
【问题描述】:

我正在训练一个具有以下结构的 keras 自动编码器模型:

model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(MAX_CONTEXTS, 3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='relu'))
model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])

我的数据的形状为 (number_of_samples, 430, 3),包含 [-1.9236537371711413, 1.9242677998256246] 中的值。该数据已经标准化。然后我训练这个模型:

history = model.fit(X, X, epochs=15, batch_size=2, verbose=1, shuffle=True, validation_split=0.2)

并获得 95.03% 的准确率(可能很高,但我现在的问题是别的)。现在当我预测我的数据样本时,正值相对较好,接近它们在输入中的值,但负值都四舍五入为0。这是我选择的损失函数的错误吗?如果是这样,我应该选择哪个其他损失函数?还是我必须以不同的方式扩展我的数据?

【问题讨论】:

    标签: python tensorflow keras autoencoder


    【解决方案1】:

    这是因为您在输出层应用了relu 激活。

    【讨论】:

    • 嗨,你是对的,我尝试使用 tanh 代替,但它的值仍然限制在 -1.0。我似乎找不到任何会降低的东西,例如至少降低到-2.0。你有什么建议吗?
    • 尽量不要使用任何激活,activation=None
    猜你喜欢
    • 2018-06-23
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2022-01-26
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多