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

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

输出结

image.png

 

设计思

image.png

image.png

 

核心代

 

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 accuracy

     

     

   def gradient(self, x, t):

       self.loss(x, t)

       dout = 1

       dout = 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'].db

       grads['W2'], grads['b2'] = self.layers['Affine2'].dW, self.layers['Affine2'].db

       return grads

network_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)    


相关文章
|
4月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
5月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
374 2
|
5月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
133 8
|
6月前
|
算法 安全 网络安全
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
274 0
|
机器学习/深度学习 算法 PyTorch
OpenCV-图像着色(采用DNN模块导入深度学习模型)
OpenCV-图像着色(采用DNN模块导入深度学习模型)
471 0
来自OpenCv的DNN模块助力图像分类任务
来自OpenCv的DNN模块助力图像分类任务
342 0
来自OpenCv的DNN模块助力图像分类任务
|
机器学习/深度学习
DNN 模块MVP 模式学习中的一些问题
为了让View部分可以测试,我们使用interface来分离View和业务逻辑的耦合。 我的问题是: Q:对于在aspx.design.cs中声明的控件,我们也需要在interface中声明吗?如果要声明,那么在aspx.design.cs中的控件声明是不是就是interface的实现? 我们不能在interface直接声明跟aspx.design.cs控件同名的变量,我们应该认为aspx.design.cs中的控件就是view的一部分,我们无法控制。
570 0
|
机器学习/深度学习 前端开发
介绍一些免费的DNN模块
Administration Advanced Control Panel Free fully featured ajax enabled control panel replacement for Dot...
944 0
|
机器学习/深度学习
如何使用NAnt 自动打包DNN模块 之一
一、安装NAnt 每次开发完毕一个DNN模块的版本,打包DNN模块是一件很繁琐的事情。更重要的是,为每一个发布的版本做一个安装包如果用手工管理和容易出错。这里介绍一下如何使用NAnt自动打包模块。 首先需要下载NAnt,http://sourceforge.net/projects/nant/ 下载之后解压这个ZIP包 解压之后的目录重名名为NAnt,拷贝到c:下面。
1066 0
|
机器学习/深度学习 内存技术
DNN免费模块集锦
注:本贴还在更新中。 Text/HTML 整站内容替换模块 DNN Text/HTML Replacement Tool  站点计数器模块 Free Visitor Counter CounterXP  Google Analytics 模块 iFinity Google Analyt...
821 0

热门文章

最新文章