我正在尝试建立一个神经网络来识别并生成与图像中的字符(a-z,A-Z,0-9)相对应的字符串。
我正在使用Char74kFnt dataset
我的训练/测试图像/标签都是numpy数组。 62个字符类别中的每个字符都有1016张图像。因此,图像总数为62992。我选择了数据集的75%作为训练数据。最初,训练/测试标签是字符本身,但是却给我带来了价值错误(例如:将字符串转换为浮点数时出错) 'b'),所以我将int(ord(x))映射到标签上。我的训练/测试数据在numpy数组中的格式如下:
train&test_images(0:1016,128,128)对应所有'0'
。
。
。
train&test_images(61976:,128,128)对应于所有'z'
我的问题是,当我训练该模型时,我的精确度保持在0%,并且损失了nan(参见代码)
from Char74k import Char74kFntDataSet
import numpy as np
import tensorflow as tf
from tensorflow import keras
a=Char74kFntDataSet()
model = keras.Sequential([
keras.layers.Flatten(input_shape=(128, 128)),
keras.layers.Dense(120, activation=tf.nn.relu),
keras.layers.Dense(62, activation=tf.nn.softmax)
])
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(a.train_images, a.train_labels, epochs=2)
我的数据集是否可能不够大?还是存在一些简单的错误(非理想参数,可能的不正确/非理想数据输入等)或我应该使用的其他特定模型用而不是这个?
以下命令行摘要显示了0%的准确性:
Epoch 1/2
47244/47244 [==============================] - 43s 908us/step - loss: nan - acc: 0.0000e+00
Epoch 2/2
47244/47244 [==============================] - 28s 587us/step - loss: nan - acc: 0.0000e+00
15748/15748 [==============================] - 12s 749us/step
Test accuracy: 0.0