【发布时间】:2021-01-06 11:38:59
【问题描述】:
我正在尝试使用 LSTM 进行分类(进行事件预测)我有 320 个类。数据集由时间序列数据组成,使用以下代码创建和训练:
def create_dataset(dataset,y, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back):
a = dataset.iloc[i:(i+look_back)].to_numpy()
dataX.append(a)
dataY.append(y.iloc[i + look_back])
return np.array(dataX), np.array(dataY)
train_size = int(len(df1) * 0.7)
test_size = len(df1) - train_size
train, test = df1.iloc[0:train_size], df1.iloc[train_size:len(df1)]
print(train.shape, test.shape)
# reshape into X=t and Y=t+1
look_back = 10
#X, Y = create_dataset(dataset, look_back)
train.msg_code = to_categorical(train.msg_code)
test.msg_code = to_categorical(test.msg_code)
trainX, trainY = create_dataset(train,train.msg_code, look_back)
#print(trainX)
#print(trainY)
testX, testY = create_dataset(test,test.msg_code, look_back)
model = Sequential()
adam = Adam(lr=0.01)
#LSTM layers
chk = ModelCheckpoint('best_model13.pkl', monitor='val_accuracy', save_best_only=True, mode='max', verbose=1)
model.add(LSTM(128, return_sequences=True, input_shape=(trainX.shape[1],trainX.shape[2])))
#model.add(LSTM(200, return_sequences=True))
#model.add(LSTM(200, return_sequences=True))
#model.add(LSTM(200, return_sequences=True))
# model.add(LSTM(200, return_sequences=True))
#Dense layer
model.add(Dense(320, activation = 'relu'))
#outputlayer
model.add(Dense(320,activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
#model fitting
history = model.fit(trainX, trainY,validation_data=(testX,testY), epochs=500, batch_size=32,callbacks=[chk],shuffle=False)
model = load_model('best_model13.pkl')
scores = model.evaluate(testX, testY, verbose=0)
我收到以下错误:
InvalidArgumentError: assertion failed: [Condition x == y did not hold element-wise:] [x (sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/Shape_1:0) = ] [32 1] [y (sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/strided_slice:0) = ] [32 10]
[[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/assert_equal_1/Assert/Assert (defined at <ipython-input-21-2a944dbcd5e3>:220) ]] [Op:__inference_train_function_22113]
Function call stack:
train_function
【问题讨论】:
-
你确定模型的输出和标签的形状是一样的吗?
-
@Sarah Rara,如果您找到了很好的解决方案。但是,如果您可以在下面的答案部分中提供工作代码以造福于社区,那就太好了。谢谢!
标签: python tensorflow machine-learning keras lstm