DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比

导读
          神经网络算法封装为层级结构的作用。在神经网络算法中,通过将神经网络的组成元素实现为层,可以高效地计算梯度(反向传播法)。通过比较数值微分和误差反向传播法的结果,可以确认误差反向传播法的实现是否正确(梯度确认)。

目录

输出结果

设计思路

核心代码

代码实现过程错误记录


输出结果

设计思路

核心代码

 class TwoLayerNet:def __init__(self, input_size, hidden_size, output_size, weight_init_std = 0.01):self.params = {}self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size)self.params['b1'] = np.zeros(hidden_size)self.params['W2'] = weight_init_std * np.random.randn(hidden_size, output_size) self.params['b2'] = np.zeros(output_size)self.layers = OrderedDict()self.layers['Affine1'] = Affine(self.params['W1'], self.params['b1'])self.layers['Relu1'] = Relu()self.layers['Affine2'] = Affine(self.params['W2'], self.params['b2'])self.lastLayer = SoftmaxWithLoss()def predict(self, x):for layer in self.layers.values():x = layer.forward(x)return x# x:输入数据, t:监督数据def loss(self, x, t):y = self.predict(x)return self.lastLayer.forward(y, t)def accuracy(self, x, t):y = self.predict(x)y = np.argmax(y, axis=1)if t.ndim != 1 : t = np.argmax(t, axis=1)accuracy = np.sum(y == t) / float(x.shape[0])return accuracydef gradient(self, x, t):self.loss(x, t)dout = 1dout = self.lastLayer.backward(dout)layers = list(self.layers.values())layers.reverse()for layer in layers:dout = layer.backward(dout)grads = {}grads['W1'], grads['b1'] = self.layers['Affine1'].dW, self.layers['Affine1'].dbgrads['W2'], grads['b2'] = self.layers['Affine2'].dW, self.layers['Affine2'].dbreturn gradsnetwork_batch = TwoLayerNet(input_size=784, hidden_size=50, output_size=10)grad_numerical = network_batch.numerical_gradient_api(x_batch, t_batch)
grad_backprop = network_batch.gradient(x_batch, t_batch)     

代码实现过程错误记录

出现错误,待解决!!!

Traceback (most recent call last):
  File "F:\File_Python\Python_daydayup\190316.py", line 281, in <module>
    grad = network.gradient(x_batch, t_batch)             
  File "F:\File_Python\Python_daydayup\190316.py", line 222, in gradient
    self.loss(x, t)
  File "F:\File_Python\Python_daydayup\190316.py", line 193, in loss
    return self.lastLayer.forward(y, t) #         ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆   ------部分更改
  File "F:\File_Python\Python_daydayup\190316.py", line 132, in forward
    self.loss = cross_entropy_error(self.y, self.t)
  File "F:\File_Python\Python_daydayup\190316.py", line 39, in cross_entropy_error
    return -np.sum(np.log(y[np.arange(batch_size), t.astype('int64')] + 1e-7)) / batch_size          #t.astype('int64')
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (100,) (100,10)

相关文章
DL之DNN:自定义2层神经网络TwoLayerNet模型(层级结构更高效)算法对MNIST数据集进行训练、预测

DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比相关推荐

  1. DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、预测

    DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练.预测 导读           计算图在神经网络算法中的作用.计算图的节点是由局部计算构成的. ...

  2. DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测

    DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练.预测 导读 利用python的numpy计算库,进行自定义搭建2层神经网络TwoLayerN ...

  3. DL之DNN优化技术:自定义MultiLayerNetExtend算法(BN层使用/不使用+权重初始值不同)对Mnist数据集训练评估学习过程

    DL之DNN优化技术:自定义MultiLayerNetExtend算法(BN层使用/不使用+权重初始值不同)对Mnist数据集训练评估学习过程 目录 输出结果 设计思路 核心代码 更多输出 相关文章: ...

  4. DL之DNN优化技术:神经网络算法简介之GD/SGD算法的简介、代码实现、代码调参之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法的简介.代码实现.代码调参之详细攻略 目录 GD算法的简介 GD/SGD算法的代码实现 1.Matlab编程实现 GD算法的改进算法 GD算法中 ...

  5. DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型

    DL之CNN:自定义SimpleConvNet[3层,im2col优化]利用mnist数据集实现手写数字识别多分类训练来评估模型 目录 输出结果 设计思路 核心代码 更多输出 输出结果 设计思路 核心 ...

  6. DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...

  7. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理

    DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理 目录 BP类神经网络理解 1.信号正向传播FP 2.误差反向传播BP+GD B ...

  8. DL之DNN优化技术:神经网络算法简介之数据训练优化【mini-batch技术+etc】

    DL之DNN优化技术:神经网络算法简介之数据训练优化[mini-batch技术+etc] 目录 1.mini-batch技术 输出结果 实现代码 1.mini-batch技术 输出结果 实现代码 # ...

  9. 排序层-深度模型-2015:AutoRec【单隐层神经网络推荐模型】

    AutoRec模型是2015年由澳大利亚国立大学提出的. 它将 自编码器(AutoEncoder ) 的思想和协同过滤结合,提出了一种单隐层神经网络 推荐模型.因其简洁的网络结构和清晰易懂的模型原理, ...

最新文章

  1. c语言 sysinfo_操作系统:内存分配(C语言 winapi)
  2. win10 远程登录 无密码用户
  3. jni 入门 android的C编程之旅 ---环境搭建helloworld
  4. eclipse 使用指南
  5. 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
  6. 简单mysql数据库备份一例及crontab说明
  7. 笔试题:简述以下两个for循环的优缺点
  8. 一个简单LEGv8处理器的Verilog实现【二】【指令相关基础知识与实验分析】
  9. 【数学建模】模拟冰山运输系统含Matlab源码
  10. 芯科Zigbee应用程序框架
  11. 【修真院java小课堂】什么是restful?rest的请求方法有哪些,有什么区别?
  12. php文字加边框,word怎么给段落加边框
  13. ZOJ 1138 Symbolic Derivation
  14. 计算机中的八卦知识,论八卦与电脑的关系
  15. 分析非结构化数据的10个步骤
  16. CSS基础之 背景属性设置
  17. ipad发布会ipad_如何在iPad上调试网站
  18. 石油大学专升本计算机课程-计算机应用基础(1)
  19. 第2-2-1章 常见组件与中台化-中台概述
  20. 联发科的原厂芯片资料下载?那里有这些资料?最全的资料整理在这里

热门文章

  1. Linux 内核引导选项简介 *********很多常用的受益匪浅
  2. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft...
  3. Android之ListView的getItemViewType和getViewTypeCount
  4. 投资者建议三星电子一分为二 股价创历史新高
  5. 调试node服务器-过程
  6. 计算机网络 网络设备命令 数据链路层解析
  7. 给wxPython事件处理函数传递参数
  8. 在华为写了 13 年代码,都是宝贵的经验
  9. 老大难的分布式锁与幂等性问题,如何解决?长文干货!
  10. 从一个故障说说Java的三个BlockingQueue