基于tensorflow,用自己名字每个字作为训练集,写一个手写体识别代码
时间: 2024-02-21 07:57:37 浏览: 154
好的,下面是基于 TensorFlow 的手写数字识别代码,使用自己名字的每个字作为训练集:
```python
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist
# 自己名字的每个字
chars = ['A', 'B', 'C', 'D']
# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 筛选出自己名字的每个字的图片
x_train_selected = []
y_train_selected = []
x_test_selected = []
y_test_selected = []
for i in range(len(x_train)):
if str(y_train[i]) in chars:
x_train_selected.append(x_train[i])
y_train_selected.append(chars.index(str(y_train[i])))
for i in range(len(x_test)):
if str(y_test[i]) in chars:
x_test_selected.append(x_test[i])
y_test_selected.append(chars.index(str(y_test[i])))
# 数据归一化
x_train_selected = tf.keras.utils.normalize(x_train_selected, axis=1)
x_test_selected = tf.keras.utils.normalize(x_test_selected, axis=1)
# 构建模型
model = keras.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dense(64, activation='relu'),
layers.Dense(len(chars), activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train_selected, y_train_selected, epochs=10, validation_data=(x_test_selected, y_test_selected))
# 评估模型
test_loss, test_acc = model.evaluate(x_test_selected, y_test_selected, verbose=2)
print('\nTest accuracy:', test_acc)
```
在这个代码中,我们首先定义了自己名字的每个字,然后从 MNIST 数据集中筛选出这些字的图片,进行数据归一化,构建了一个包含 3 个全连接层的神经网络,最后训练并评估模型。
阅读全文