实现多个 数字的识别 如
实现方法: 把五个数字的图 拼成一个 再进行 训练 和 测试
学校讲的自己看的都一知半解,我都不知道 我一个大二的,没什么基础的学生是怎么选上做这个研究的。。马上due就快到了,求大神在我代码基础上帮我完成。。
import tensorflow as tf
import numpy as np
from numpy import array
import os
import cv2
import matplotlib.pyplot as plt
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
import random
countain = 0
myxtrain = []
myytrain = []
while countain < 5:
a_1 = random.randint(0, 10000)
a_2 = random.randint(0, 10000)
a_3 = random.randint(0, 10000)
a_4 = random.randint(0, 10000)
a_5 = random.randint(0, 10000)
a = np.concatenate((x_train[a_1], x_train[a_2], x_train[a_3], x_train[a_4], x_train[a_5]), axis=1)
myxtrain.append(a)
labelx = []
s1 = str(y_train[a_1])
s2 = str(y_train[a_2])
s3 = str(y_train[a_3])
s4 = str(y_train[a_4])
s5 = str(y_train[a_5])
labelx.append(s1)
labelx.append(s2)
labelx.append(s3)
labelx.append(s4)
labelx.append(s5)
s = ' '.join(labelx)
print('----', s)
# cv2.imwrite(os.path.join(path1, s + '.jpg'), a)
# cv2.waitKey(0)
myytrain.append(s)
countain += 1
x_train = array(myxtrain)
y_train = array(myytrain)
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.optimizers import SGD
model = tf.keras.models.Sequential()
model.add(Conv2D(5, (3, 3), activation='relu', input_shape=(28, 140, 2)))
model.add(Conv2D(5, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(10, activation='softmax'))
sgd = SGD(lr=0.0001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)
model.fit(x_train, y_train, batch_size=1, epochs=10)