来自图像模型的字符识别仍保持0%的精度和不损失的

时间:2018-08-29 04:11:46

标签: python tensorflow image-processing machine-learning keras

我正在尝试建立一个神经网络来识别并生成与图像中的字符(a-z,A-Z,0-9)相对应的字符串。

我正在使用Char74kFnt dataset

我的训练/测试图像/标签都是numpy数组。 62个字符类别中的每个字符都有1016张图像。因此,图像总数为62992。我选择了数据集的75%作为训练数据。最初,训练/测试标签是字符本身,但是却给我带来了价值错误(例如:将字符串转换为浮点数时出错) 'b'),所以我将int(ord(x))映射到标签上。我的训练/测试数据在numpy数组中的格式如下:

  • train&test_images.shape(x,128,128),例如:128x128图片大小
  • 值:

train&test_images(0:1016,128,128)对应所有'0'

train&test_images(61976:,128,128)对应于所有'z'

  • 所有图像的值均已标准化(x / 255)
  • 这些图像与尺寸/对应于正确的火车和测试标签索引相匹配。

我的问题是,当我训练该模型时,我的精确度保持在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

0 个答案:

没有答案