【问题标题】:LSTM - How can I prevent dirfferent loss / R2 outcomes for the same input?LSTM - 如何防止相同输入的不同损失/ R2 结果?
【发布时间】:2019-08-22 09:24:05
【问题描述】:

我在 python (kears) 中有一个 LSTM 神经网络,我想使用 tp 预测一些时间序列数据。

我遇到的问题是我总是得到不同的损失和 r2(确定度)值,有时甚至是 NaN 作为损失,尽管我根本没有更改代码

我尝试使用不同的损失函数(mse、mae)。我还尝试更改图层或序列的大小,但没有任何效果。

changes = Bedarf_data[["Bedarf_changes", "Temperatur_changes", "monat", "uhrzeit"]].values

X = []
Y = []

for i in range (0, len(changes) - 96):
    Y.append(changes[i,0])
    X.append(np.array(changes[i+1:i+97]))

X = np.array(X).reshape(-1, 96, 4)
Y = np.array(Y)

# Modell
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense

model = Sequential()
model.add(LSTM(12, activation="relu", input_shape=(96, 4)))
model.add(Dense(1))

model.compile(optimizer="rmsprop", loss="mse")
model.fit(X, Y, batch_size=96, epochs=10)

我期望至少有一个稳定的结果,没有太多的变化。 我该怎么做才能至少获得稳定的输出?

【问题讨论】:

    标签: python keras neural-network lstm


    【解决方案1】:

    神经网络使用大量随机初始化。这意味着每次创建新网络时,它都与其他网络不同。

    您可以设置一个随机种子(但您需要在每次运行之前完全重置内核)以保证随机数始终相同:

    numpy.random.seed(choose_a_number)
    

    你也可以试试tf.set_random_seed(choose_a_number)

    【讨论】:

    • 感谢您的快速答复。我在哪里插入那条线是否相关? (这里是初学者)
    • 是的,它必须在第一个随机事物之前。 (一般大家都是在导入numpy之后直接放的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2021-05-17
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多