- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3小时前关门了。
Improve this question
我很感激你花时间考虑我的问题。
我有一个问题与lstm,因为它给了我overfiting为我所有的结果。我尝试了不同的技术。
有人可以检查我的代码,看看我是否写错了行吗?
## load input stages
dfList = []
rowsCounts=[]
for i in range(1,41):
rowsCounts.append(pd.read_csv(r'C:\Users\wannees.alkhayyali\OneDrive - University of Calgary\PFPD\Field Data\COP\inj data\stage_'+str(i)+'.csv',usecols = [i for i in range(10)]).shape[0])
maxRowsCount=max(rowsCounts)
# Fill rows with zero to ensure that each stage has the same length
for i in range(1,41):
df=pd.read_csv(r'C:\Users\wannees.alkhayyali\OneDrive - University of Calgary\PFPD\Field Data\COP\inj data\stage_'+str(i)+'.csv',usecols = ['stage_clean_cum_m3','clean_rate_m3_per_min','proppant_con (kg/m3)'])
df_final = df.reindex(range(maxRowsCount), fill_value=0)
# Normalize
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(df_final.values)
dfList.append(x_scaled)
dataSet = np.array(dfList)
dfOutput=pd.read_csv(r'C:\Users\wannees.alkhayyali\OneDrive - University of Calgary\PFPD\Field Data\COP\inj data\output.csv')
Y = np.array(dfOutput.values)
#Split into train and test sets
Xtrain=dataSet[0:30]
Xtest=dataSet[30:]
Ytrain=Y[0:30]
Ytest=Y[30:]
#Design network
model = Sequential()
model.add(LSTM(50, return_sequences=True, kernel_regularizer=l2(0.01), recurrent_regularizer=l2(0.01), bias_regularizer=l2(0.01), input_shape=(maxRowsCount, 3)))
model.add(LSTM(20))
# model.add(LSTM(50, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
opt= optimizers.Adam(learning_rate=0.0001)
model.compile(optimizer=opt, loss='mse')
1条答案
按热度按时间kqqjbcuj1#
您的算法过拟合,因为您使用的数据集太小。您正在对整个数据集进行切片,并在前30个项目上训练神经网络,然后使用其余项目进行测试。您宁愿执行相反的操作,或为训练集选择较大的切片:
或者您可以仅交换train和test,这样train数据集将包含N-30项:
请注意,如果数据集太小,它无论如何都会过拟合。您可以使用data augmentation的一些技术,但有一定的限制。在大多数情况下,您需要一个新的数据集。