基于神经网络的英文字母识别的代码
时间: 2023-09-08 08:14:49 浏览: 43
以下是基于 Python 和 TensorFlow 的一个简单的英文字母识别代码:
```python
import tensorflow as tf
from tensorflow import keras
import numpy as np
# 加载数据集
data = keras.datasets.imdb
(train_data, train_labels), (test_data, test_labels) = data.load_data(num_words=10000)
# 建立词表
word_index = data.get_word_index()
word_index = {k:(v+3) for k,v in word_index.items()}
word_index["<PAD>"] = 0
word_index["<START>"] = 1
word_index["<UNK>"] = 2
word_index["<UNUSED>"] = 3
reverse_word_index = dict([(value, key) for (key, value) in word_index.items()])
# 预处理数据
train_data = keras.preprocessing.sequence.pad_sequences(train_data, value=word_index["<PAD>"], padding='post', maxlen=250)
test_data = keras.preprocessing.sequence.pad_sequences(test_data, value=word_index["<PAD>"], padding='post', maxlen=250)
# 建立模型
model = keras.Sequential()
model.add(keras.layers.Embedding(10000, 16))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(keras.layers.Dense(16, activation=tf.nn.relu))
model.add(keras.layers.Dense(1, activation=tf.nn.sigmoid))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_data, train_labels, epochs=40, batch_size=512, validation_data=(test_data, test_labels), verbose=1)
# 测试模型
test_loss, test_acc = model.evaluate(test_data, test_labels)
print('Test accuracy:', test_acc)
# 预测单个字母
def decode_review(text):
return " ".join([reverse_word_index.get(i, "?") for i in text])
prediction = model.predict(np.array([test_data[0]]))
print("Prediction: " + str(prediction[0]))
print("Actual: " + str(test_labels[0]))
print(decode_review(test_data[0]))
```
这个代码使用的是 IMDB 电影评论数据集,但是可以根据需要进行修改来适应字母识别任务。