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)    


相关文章
|
18天前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
36 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
22天前
|
机器学习/深度学习 编解码 自动驾驶
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
52 16
YOLOv11改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
22天前
|
机器学习/深度学习 存储
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
55 15
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
18天前
|
机器学习/深度学习 存储
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
43 0
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
3月前
|
机器学习/深度学习 自然语言处理 数据可视化
【由浅到深】从神经网络原理、Transformer模型演进、到代码工程实现
阅读这个文章可能的收获:理解AI、看懂模型和代码、能够自己搭建模型用于实际任务。
269 11
|
3月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
164 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
5月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
170 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
5月前
|
边缘计算 人工智能 安全
5G 核心网络 (5GC) 与 4G 核心网:架构变革,赋能未来
5G 核心网络 (5GC) 与 4G 核心网:架构变革,赋能未来
311 6
|
5月前
|
机器学习/深度学习 算法 搜索推荐
图神经网络综述:模型与应用
图神经网络综述:模型与应用

热门文章

最新文章