【问题标题】:My model doesn't seem to work, as accuracy and loss are 0我的模型似乎不起作用,因为准确度和损失为 0
【发布时间】:2020-05-19 04:30:50
【问题描述】:

我尝试使用 keras 设计 LSTM 网络,但准确度为 0.00,而损失值为 0.05,我编写的代码如下。

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(1, activation = tf.nn.relu))



def percentage_difference(y_true, y_pred):
    return K.mean(abs(y_pred/y_true - 1) * 100)



model.compile(optimizer='sgd', 
             loss='mse',
             metrics = ['accuracy', percentage_difference])

model.fit(x_train, y_train.values, epochs = 10)


我的输入训练和测试数据集已使用 pandas 库导入。功能数量为 5,目标数量为 1。所有努力将不胜感激。

【问题讨论】:

  • Hossein,您能否提供一些示例数据?
  • @Geeocode 你是什么意思?您需要数据才能工作,或者您需要有关我正在从事的工作的更多信息?
  • 您使用的某种样本数据。此外,您为什么认为这是一个 LSTM 网络?
  • 我正在使用一个环境数据集,该数据集代表一个循环过程,数据框对应于空间特征。能够在同一数据集上进行类似处理的网络只是 RNN 和 LSTM。这就是我使用这种网络模型的原因。
  • 我明白了,但是您的 RNN 或 LSTM 层在哪里?

标签: python machine-learning keras deep-learning loss-function


【解决方案1】:

据我所知,您正在使用 神经网络 来解决 回归 问题。

回归是预测continuous值的任务,通过学习各种独立特征。

因此,在回归问题中,我们没有像 accuracy 这样的 metrics,因为这是用于 supervised 学习的 classification 分支。

回归accuracy等价物可以是确定系数R^2 Score

from keras import backend as K

def coeff_determination(y_true, y_pred):
    SS_res =  K.sum(K.square( y_true-y_pred ))
    SS_tot = K.sum(K.square( y_true - K.mean(y_true) ) )
    return ( 1 - SS_res/(SS_tot + K.epsilon()) )

model.compile(optimizer='sgd', 
         loss='mse',
         metrics = [coeff_determination])

【讨论】:

  • 当我尝试使用您的解决方案时,“coeff_determination”变为 [-0.0098]。我想,不管是什么符号,我们都面临过拟合?我说的对吗?
  • @HosseinAmini,我认为它不合适。
  • @HosseinAmini,如果您添加完整代码,我可以为您提供更多帮助,我会尝试检测您的问题。
  • 经过 20 个 epochs,我可以达到 0.11 的准确度系数,这意味着通过增加 epochs 的数量我可以进行拟合。然后我将根据您发送给我的链接中的说明和程序将 LSTM 层添加到模型中。感谢您的许可和努力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2017-12-17
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多