使用bilstm写一个三分类算法
时间: 2024-02-26 13:46:40 浏览: 14
下面是使用bilstm写一个三分类算法的Python代码:
```python
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM, Bidirectional, Dropout
# 加载数据集
X_train = np.load('X_train.npy')
y_train = np.load('y_train.npy')
X_test = np.load('X_test.npy')
y_test = np.load('y_test.npy')
# 定义模型
model = Sequential()
model.add(Bidirectional(LSTM(128, return_sequences=True), input_shape=(10, 100)))
model.add(Dropout(0.5))
model.add(Bidirectional(LSTM(64)))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32)
# 评估模型
score = model.evaluate(X_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
```
上述代码中,我们使用了一个双向LSTM模型,其中第一层LSTM返回的序列用于第二层LSTM的输入,最后输出一个大小为3的softmax层,用于进行三分类。我们还添加了两个dropout层以防止过拟合。最后通过使用fit方法训练模型,并使用evaluate方法评估模型在测试集上的表现。