opencv-python ANN 神经网络训练 minist 数据集, 训练后Predict的返回值总是 nan 空矩阵,劳烦大神看看哪里出了问题

qq_42738260 2019-04-09 05:00:38



import os
import struct
import numpy as np
import cv2

def load_mnist(path, kind='train'):
"""Load MNIST data from `path`"""
labels_path = os.path.join(path,
'%s-labels.idx1-ubyte'
% kind)
images_path = os.path.join(path,
'%s-images.idx3-ubyte'
% kind)
with open(labels_path, 'rb') as lbpath:
magic, n = struct.unpack('>II',
lbpath.read(8))
labels = np.fromfile(lbpath,
dtype=np.uint8)

with open(images_path, 'rb') as imgpath:
magic, num, rows, cols = struct.unpack('>IIII',
imgpath.read(16))
images = np.fromfile(imgpath,
dtype=np.uint8).reshape(len(labels), 784)

return images, labels

image, labels = load_mnist(r'C:\Users\Desktop\Python\Image_processing\data_number','train')

charNum = 10
'''将数据集的n维label 格式更新为 n X 10 '''
trainingLabel = []
for i in range(len(labels)):
labelArraytoAppend = []
for j in range(charNum):
if labels[i] == j:
labelArraytoAppend.append(1)
else:
labelArraytoAppend.append(0)
trainingLabel.append(labelArraytoAppend)

'''训练多层神经网络 MLP'''
ann = cv2.ml.ANN_MLP_create()
ann.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)
ann.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)
ann.setBackpropMomentumScale(0.1)
ann.setBackpropWeightScale(0.001)
ann.setTermCriteria((cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 500, 0.05))

ann.setLayerSizes(np.array([np.array(image).shape[1], 128, charNum], dtype=np.uint16))

ann.train(np.array(image, dtype=np.float32), cv2.ml.ROW_SAMPLE, np.array(trainingLabel, dtype=np.float32))
ann.save(r'C:\Users\bj0lt5\Desktop\Python\Image_processing\data_number\characterRecognize.xml')

'''测试神经网络'''
testImage, testLabels = load_mnist(r'C:\Users\Desktop\Python\Image_processing\data_number', 't10k')
#result = np.zeros((testLabels.shape[0], charNum), dtype=np.float32)
retval, result = ann.predict(np.array(image, dtype=np.float32))
print(result[:2])
...全文
825 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
您好~我想问您一下,这个问题您解决了吗?因为我现在也在使用opencv来训练神经网络。我也遇到了这个问题。
李太浪 2021-06-25
  • 举报
回复
@RCNN今天跑代码了吗 你好,您现在opencvANN可以处理了吗,想问下多个三维数组如何进行训练
qq_42738260 2019-04-10
  • 打赏
  • 举报
回复
新手还没接触到 Tensor flow 。。 我去学习一下,但是这样应该也可以实现吧,不知道哪里有问题
tiger波波 2019-04-10
  • 打赏
  • 举报
回复
你都用python了为啥不用tensorflow呢,资料还多点

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧