我正在keras中训练一个自动编码器,其定义如下:
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(430, 3)))
model.add(RepeatVector(430))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(3)))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
print(model.summary())
context_paths = loadFile()
X_train, X_test = train_test_split(context_paths, test_size=0.20)
print('Fitting model.')
history = model.fit(X_train, X_train, epochs=1, batch_size=8, verbose=1, shuffle=True, validation_data=(X_test, X_test))
predict_sample = X_train[0].reshape((1, 430, 3))
predict_output = model.predict(predict_sample, verbose=0)
print(predict_output[0, :, 0])
这段代码没有给出任何错误,但是当我运行它时,损失是nan。我已经检查了有关SO的一些问题,发现在以下情况下会出现此问题:
nan或无限值存在 -->我检查了我的输入数据,哪个返回,所以我也做了哪个返回,所以我假设我的数据是正确的numpy.isnan(myarray).any()Falsenumpy.isfinite(myarray).any()True
批量太大-->我从32个减少到8个,没有多大帮助
层大小太大-->我从100减少到24,没有多大帮助
以下是前几批的图片:
在这里,损失是巨大的,但我不确定是什么原因造成的。我的数据集中的数字范围已达到 int32 的极限。此外,我的数据也用0填充。
温温酱
相关分类