没有合适的资源?快使用搜索试试~ 我知道了~
目录数据集的读取神经网络的推理批处理 数据集的读取 以“(训练图像,训练标签),(测试图像,测试标签)”的形式读入的MNIST数据 import sys, os sys.path.append(os.pardir) # 为了导入父目录中的文件而进行的设定 from dataset.mnist import load_mnist (x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False) # flatten:设置 是否展开输入图像(变成一维数组) # normalize:设置是否将输入图像正规化
资源详情
资源评论
资源推荐
MINIST手写识别(前向传播的手写识别(前向传播的python实现)实现)
目录目录数据集的读取神经网络的推理批处理
数据集的读取数据集的读取
以“(训练图像,训练标签),(测试图像,测试标签)”的形式读入的MNIST数据
import sys, os
sys.path.append(os.pardir) # 为了导入父目录中的文件而进行的设定
from dataset.mnist import load_mnist
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
# flatten:设置 是否展开输入图像(变成一维数组)
# normalize:设置是否将输入图像正规化为0.0~1.0的值。如果将该参数设置 为False,则输入图像的像素会保持原来的0~
255
# one_hot_label设置是否将标签保存为onehot表示(one-hot representation)。 one-hot表示是仅正确解标签为1,其余 皆为
0的数组,就像[0,0,1,0,0,0,0,0,0,0]这样。当one_hot_label为False时, 只是像7、2这样简单保存正确解标签;当
one_hot_label为True时,标签则 保存为one-hot表示。
#在学习权重参数时,读数据集标签时需要用onehot格式的标签
显示某个样本图像
import numpy as np
from PIL import Image #为了显示图像
img = x_train[0] label = t_train[0] img = img.reshape(28, 28) #前面读取为一维数组,所以要reshape
def img_show(img):
pil_img = Image.fromarray(np.uint8(img))
pil_img.show() #把NumPy数组中图像数据-->为PIL用的数据对象
img_show(img)
神经网络的推理神经网络的推理
输入层2828
个神经元(对应每个
2828个像素)
输出层10个神经元(10个类别)
两个隐层分别50,100个神经元(随便指定的)
神经网络的模型(学习到的权重参数)存储在pickle文件中
pickle模块同样是为了永久存储,存成字典的样式,其可以对小数据量进行存储,pickle可以将对象数据压到一个文件中,永
久保存。这样在取用时,只需将该文件中的数据取出。而不是每次都重新进过各种语句,处理得到对象数据。
存成pickle:pickle.dump(obj,file,protocal) #obj是个字典
读取pickle:pickle.load(file)
读取训练集(注意它只返回了训练集)
def get_data():
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False)
#读取的时候对数据进行了预处理,正规化
return x_test, t_test
读取模型
def init_network():
with open("sample_weight.pkl", 'rb') as f:
network = pickle.load(f)
return network
预测样本(得到输出的十维矩阵)
def predict(network, x):
W1, W2, W3 = network['W1'], network['W2'], network['W3'] b1, b2, b3 = network['b1'], network['b2'], network['b3']
a1 = np.dot(x, W1) + b1
z1 = sigmoid(a1)
a2 = np.dot(z1, W2) + b2
z2 = sigmoid(a2)
a3 = np.dot(z2, W3) + b3
y = softmax(a3)
return y
推理主函数
x, t = get_data()
network = init_network()
accuracy_cnt = 0 #计算正确的个数
weixin_38748210
- 粉丝: 4
- 资源: 928
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0