Tensorflow mnist编号分类,但使用您自己的数据集
下面的代码工作得非常好,但是我想用这个模型和我自己的一组图像进行训练和预测,我发现这个模型最适合我的一组图像,因为它可以识别随机的黑线(数字),但我被限制在x_列和y_列部分,我有11个不同类别的我自己的图像集,并希望将此模型应用于它们,但我不知道如何将它们与此模型联系起来,例如:Tensorflow mnist编号分类,但使用您自己的数据集,tensorflow,conv-neural-network,mnist,Tensorflow,Conv Neural Network,Mnist,下面的代码工作得非常好,但是我想用这个模型和我自己的一组图像进行训练和预测,我发现这个模型最适合我的一组图像,因为它可以识别随机的黑线(数字),但我被限制在x_列和y_列部分,我有11个不同类别的我自己的图像集,并希望将此模型应用于它们,但我不知道如何将它们与此模型联系起来,例如: train= 'C:\\Users\\min2\\Desktop\\cnn\\train' ---> contains 11 different classes separated by folders t
train= 'C:\\Users\\min2\\Desktop\\cnn\\train' ---> contains 11 different classes separated by folders
test= 'C:\\Users\\min2\\Desktop\\cnn\\test' ---> contains 11 different classes separated by folders
我已经研究了x_tain,x_test,y_train,y_test是做什么的,但我不确定如何关联我自己的一组图像而不是一组数字。
我认为这段代码的前两部分是关于处理图像集的,第3部分和第4部分是关于cnn模型、训练和预测的
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
rows, cols = 28, 28
x_train = x_train.reshape(x_train.shape[0], rows, cols, 1)
x_test = x_test.reshape(x_test.shape[0], rows, cols, 1)
input_shape = (rows, cols, 1)
----------------------------------------------------------------------
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train = x_train / 255.0
x_test = x_test / 255.0
y_train = tf.keras.utils.to_categorical(y_train, 10)
y_test = tf.keras.utils.to_categorical(y_test, 10)
----------------------------------------------------------------------
def build_lenet(input_shape):
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(filters=6,
kernel_size=(5, 5),
strides=(1, 1),
activation='tanh',
input_shape=input_shape))
model.add(tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
strides=(2,2)))
model.add(tf.keras.layers.Conv2D(filters=16,
kernel_size=(5, 5),
strides=(1, 1),
activation='tanh'))
model.add(tf.keras.layers.AveragePooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units=120, activation='tanh'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units=84, activation='tanh'))
model.add(tf.keras.layers.Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.SGD(lr=0.1, momentum=0.0, decay=0.0),
metrics=['accuracy'])
return model
-------------------------------------------------------------------------------------
lenet = build_lenet(input_shape)
epochs = 10
history = lenet.fit(x_train, y_train,
epochs=epochs,
batch_size=128,
verbose=1)
loss, acc= lenet.evaluate(x_test, y_test)
print('ACCURACY: ', acc)
x_train=x_train.reshape(x_train.shape[0], 28, 28)
print("Test Data", x_test.shape, y_test.shape)
x_test=x_test.reshape(x_test.shape[0], 28, 28)
print("Test Data", x_test.shape, y_test.shape)
image_index = 4444
plt.imshow(x_test[image_index].reshape(28, 28), cmap='Greys')
pred = lenet.predict(x_test[image_index].reshape(1, rows, cols, 1))
print(pred.argmax())
您应该使用自己的数据集加载器更改(x\u-train,y\u-train),(x\u-test,y\u-test)=mnist.load\u data()
。
使用
tf.keras.preprocessing.image\u dataset\u from\u directory
从本地目录加载图像,或者您可以使用keras ImageDataGenerator
函数来完成此操作。本教程是否有帮助?Keras在TensorFlow 2.5中有一个预处理功能,可以直接从目录导入图像:tf.Keras.preprocessing.image_dataset_from_directory