然后我将其裁剪为5个不同的部分,这些部分具有不同类型的阈值和角度(在2D旋转矩阵中),用于训练神经网络。 现在我有45个类似的jpg文件,其范围从0到9的任何数字。 但是我不明白如何使用我自己的数据而不是MNIST数据集来训练它 请帮助我处理建立数字识别程序。我需要将所有数字从img提取到文本。
答案 0 :(得分:2)
如果您要使用NN方法,我首先要从一个小nn开始,然后看看它的效果如何,您可以使用here中的MNIST玩具示例。
请注意,您将需要使用自己的数据,而不是mnist:
import tensorflow as tf
x_train, y_train = load_train_data()
x_test, y_test = load_test_data()
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
请注意,我“发明”了两个函数:load_train_data()
和load_test_data()
,您需要为数据实现它们,并为每个函数返回一个((samples,x,y), labels)
元组。功能。
一旦有了这种感觉,我将探索更高级的网络,可以在这里查看:https://towardsdatascience.com/a-simple-2d-cnn-for-mnist-digit-recognition-a998dbc1e79a,它是2D CNN网络的不错的教程,只需使用数据加载功能代替mnist。
由于您现在可能正面临一堵墙,因为您没有足够的数据,因此需要应用一些数据扩充。
最后一个CVPR提供了一个很好的解决方案'Deep Diffeomorphic Transformer Networks',它在样本数量少的数字分类上表现出色。您可以找到mnist码here,然后再次对数据使用函数。