![](https://img-blog.csdnimg.cn/20200226123136667.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
一个简单的卷积神经网络
CNN
我是小杨我就这样
当一个代码的工匠回首往事,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样当他老去的时候,可以很自豪地告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅
公众号《小杨的技术人生》
展开
-
一个简单的卷积神经网络的——functions.py
# coding: utf-8import numpy as np# ----------------------------------------------------------------------def identity_function(x): return x# -----------------------------------------------...原创 2019-09-30 20:07:22 · 234 阅读 · 0 评论 -
一个简单的卷积神经网络——util.py
# coding: utf-8# util(功用)import numpy as np# --------------------------将损失函数的图形变得圆滑----------------------------------def smooth_curve(x): """用于将损失函数的图形变得圆滑""" window_len = 11 s = np....原创 2019-09-30 20:08:33 · 601 阅读 · 1 评论 -
神经网络中的Dropout
1、作用:普通神经网络加上Dropout,防止过拟合2、原理Dropout是在训练的过程中,随机选择去除一些神经元,在测试的时候用全部的神经元,这样可以使得模型的泛化能力更强,因为它不会依赖某些局部的特征class Dropout: """随机删除神经元 正向传播时,传递了信号的神经元,反向传播时按照原样传递信号 没有传递信号的神经元,反向传播时停止...原创 2019-10-02 10:50:38 · 1545 阅读 · 0 评论 -
Batch Normalization(正则化)
1. 过拟合的原因模型参数多,复杂度高训练数据少,提取的特征不足2. 梯度弥散和梯度爆炸梯度弥散: 神经网络采用sigmoid激活函数,误差在前向传递时,经过sigmoid单元,需要乘以sigmoid到的梯度而sigmoid的梯度往往小于1,则误差传递会越来愈小。训练速度变慢的原因,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于sigmoidsigmoid ...原创 2019-10-02 11:43:47 · 1189 阅读 · 0 评论 -
一个简单的卷积神经网络——layers.py
# coding: utf-8import numpy as npfrom functions import *from util import im2col, col2im# ------------------------------激活函数relu层-------------------------------------------------class Relu: ...原创 2019-10-02 17:55:11 · 381 阅读 · 0 评论 -
一个简单的卷积神经网络——gradient.py
# coding: utf-8import numpy as npdef _numerical_gradient_1d(f, x): h = 1e-4 # 0.0001 grad = np.zeros_like(x) for idx in range(x.size): tmp_val = x[idx] x[idx] = float...原创 2019-10-02 18:22:40 · 451 阅读 · 0 评论 -
一个简单的卷积神经网络——SimpleConvNet.py
# coding: utf-8import sys, ossys.path.append(os.pardir)import picklefrom collections import OrderedDictfrom layers import *from gradient import numerical_gradient# pickle 是一个 python 中, 压缩/保存/...原创 2019-10-02 18:52:15 · 1422 阅读 · 1 评论 -
一个简单的卷积神经网络——gradient_check.py
梯度检验对于一个函数而言,通常由两种梯度计算方法:数值梯度(numerical gradient)解析梯度(analytic gradient)神经网络的算法使用反向传播计算目标函数关于每个参数的梯度,可以当作是解析梯度由于计算过程中,参数较多,反向传播计算的梯度很容易产生误差,导致最后的迭代效果很差故需要通过计算数值梯度,得到梯度的近似值,然后和反向传播得到的梯度及逆行比较,若两...原创 2019-10-02 19:18:38 · 532 阅读 · 0 评论 -
一个简单的卷积神经网络——trainer.py
# coding: utf-8import sys, ossys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定import numpy as npfrom optimizer import *class Trainer: """ 进行神经网络的训练的类 """ def __init__(self, network...原创 2019-10-02 19:50:25 · 786 阅读 · 0 评论 -
一个简单的卷积神经网络——train_convonet.py
# coding: utf-8import sys, ossys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定import numpy as npimport matplotlib.pyplot as pltfrom dataset.mnist import load_mnistfrom simple_convolution_net import...原创 2019-10-02 19:51:22 · 388 阅读 · 0 评论 -
一个简单的卷积神经网络——optimizer.py(优化)
# coding: utf-8# 优化网络import numpy as np# --------------------------------随机梯度下降法------------------------------------------------------class SGD: """随机梯度下降法(Stochastic Gradient Descent)"""...原创 2019-10-02 19:52:16 · 377 阅读 · 0 评论 -
一个简单的卷积神经网络运行结果
原创 2019-10-02 19:55:07 · 870 阅读 · 0 评论