我正在尝试使用 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: 断言失败: [条件 x == y 在元素级别上未成立:] [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
回答:
我在这里找到了答案 Tensorflow 2.0 InvalidArgumentError: 断言失败: [条件 x == y 在元素级别上未成立:]?
我在密集层之前添加了以下这行代码:
model.add(tf.keras.layers.Flatten())