在手写数字识别神经网络实例中,是怎么把图片变成数字的?手写数字神经网络数值维度怎么传递的?

在手写数字识别神经网络实例中,是怎么把图片变成数字的?手写数字神经网络数值维度怎么传递的?

 

我们手写的数字,展现出来是一张图片,但是我们神经网络最后输入的0-9的数字,中间究竟是怎么演变的。神经网络是怎么工作的,让我们来深入了解一下吧。

1.把图片转换成数组,图片是28*28像素的图片,因为是黑白图片,每个像素用0-255,在具体程序中,把0-255的数字转换成0.01-0.99间的小数,为什么是0.01,因为程序中乘积传递数据的,0乘以任何数都为0,数据就没办法变化,就没办法传递了。

inputs = (np.asfarray(all_values[1:]) / 255 * 0.99) + 0.01

    这里转换成的是784*1的矩阵,是而不是28*28,是为了方便计算。是不是必须转成n多行,1列的的矩阵呢?不一定,主要是看你后面怎么计算的需要,比如用卷积方法,就完全不用。其实不管点积和卷积,都是把一个大的矩阵变小,或者说就是降维。

    2.把784*1的矩阵变成200*1的矩阵。在这个变化过中,实例用的是点积法(numpy.dot())方法。在两个过程点积过程中,有这么一条规则,numpy.dot(m*n,n*l),就是用m*n维的矩阵和n*l维的矩阵点

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP神经网络是一种常用的人工神经网络,可以用于手写数字识别。下面是使用BP神经网络进行手写数字识别的步骤: 1.准备数据集:手写数字识别需要大量的标记数据集,可以使用MNIST数据集或自己制作数据集。 2.数据预处理:将数据集进行预处理,包括图像增强、降噪、二值化等操作。 3.构建BP神经网络:BP神经网络包括输入层、隐藏层和输出层,其输入层和输出层的节点数分别为数据集的特征数和类别数,隐藏层的节点数可以根据需要进行调整。 4.训练BP神经网络:使用训练集对BP神经网络进行训练,可以使用反向传播算法或其他优化算法进行训练。 5.测试BP神经网络:使用测试集对BP神经网络进行测试,计算准确率和召回率等指标。 6.优化BP神经网络:根据测试结果对BP神经网络进行优化,可以调整网络结构、学习率、迭代次数等参数。 以下是使用Python实现BP神经网络进行手写数字识别的代码: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from neural_network import NeuralNetwork # 加载数据集 digits = load_digits() X, y = digits.data, digits.target # 数据预处理 X = X / 16.0 y_onehot = np.zeros((y.shape[0], 10)) for i in range(y.shape[0]): y_onehot[i][y[i]] = 1 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y_onehot, test_size=0.2, random_state=42) # 构建BP神经网络 nn = NeuralNetwork([64, 30, 10], 'tanh') # 训练BP神经网络 nn.fit(X_train, y_train, epochs=1000, learning_rate=0.1) # 测试BP神经网络 y_pred = nn.predict(X_test) y_pred = np.argmax(y_pred, axis=1) y_test = np.argmax(y_test, axis=1) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) # 显示部分测试结果 fig, axes = plt.subplots(4, 4, figsize=(8, 8)) for i, ax in enumerate(axes.flat): ax.imshow(X_test[i].reshape(8, 8), cmap='binary') ax.set(title = f"Real Number is {y_test[i]}\nPredict Number is {y_pred[i]}"); plt.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值