深度学习
Jerry-hao
这个作者很懒,什么都没留下…
展开
-
深度学习入门-(基于python的理论和实现)11
卷积层的实现,加一点个人理解'''卷积激活池化全连接激活全连接softmax'''import numpy as npclass SimpleConvNet: def __init__(self,input_dim=(1,28,28), conv_param={'filter_num':30, 'filter_size':5,原创 2021-10-04 11:33:24 · 176 阅读 · 0 评论 -
深度学习入门-某些细节的理解2(im2col,transpose交换维度)
def im2col(input_data, filter_h, filter_w, stride=1, pad=0): """ Parameters ---------- input_data : 由(数据量, 通道, 高, 长)的4维数组构成的输入数据 filter_h : 滤波器的高 filter_w : 滤波器的长 stride : 步幅 pad : 填充 Returns ------- col...原创 2021-09-26 10:48:07 · 621 阅读 · 0 评论 -
深度学习入门-基于python的理论和实现10
防止过拟合的方法1,损失函数加上w的L2 范数。损失函数加上w的L2 范数。相应的,梯度也会变大,假如说用梯度下降算法的话,w会减少的多一些。来惩罚数值过大的w。grads['W' + str(idx)] = self.layers['Affine' + str(idx)].dW + self.weight_decay_lambda * self.layers['Affine' + str(idx)].W2, Dropout随机删除一部分神经元,如果网络的模型变得很复杂,只用权值.原创 2021-09-24 15:35:40 · 138 阅读 · 0 评论 -
深度学习入门-基于python的理论和实现-9
四种更新参数的方法原创 2021-09-22 18:24:16 · 67 阅读 · 0 评论 -
深度学习入门(基于python的理论和实现)--8
网络的类:TwoLayerNetimport sys, ossys.path.append(os.pardir)import numpy as npfrom common.layers import *from common.gradient import numerical_gradientfrom collections import OrderedDictclass TwoLayerNet: def __init__(self, input_size, hidden_size,原创 2021-09-20 19:22:09 · 374 阅读 · 0 评论 -
深度学习入门--某些细节的理解
1,为什么反向传播偏执的时候要求和?反向传播时候我们求X,W的偏导数都与X,W的形状一致。因此,我们很容易得出偏置B的偏导数也应该是一个形状为1*3的行向量。为什么我们要将向量纵向相加呢?让我们好好思考一下dB的含义:它是表示偏置的返回量。我们在做正向传播的时候,偏置加到的是每一个向量上,也就是说每一幅图片,在其中三个元素表示的位置上,都增加了偏置,所以反向传播的时候,返回的应该是这三个位置的偏执的总和。所以第一个偏置的和为1+4=5,第二个为2+5=7,第三个为3+6=9,因此我们就可以理解.原创 2021-09-19 15:44:28 · 244 阅读 · 0 评论 -
深度学习入门-(基于python的理论和实现)7
先学计算图,从计算图中可以看到正向传播和反向传播每个苹果100元,每个橘子150,最后有个0.1的消费税 price*(1+0.1)细线是正向,粗线是反向写在细线上面的数是正向传播,写在粗线下面的是反向传播(也就是求导)z = x*yz 对x 求导等于yz对y 求导等于 x反向传播给的1的含义是,总价格上涨1元,那么前面输入 应该做出“多大努力”buy_apple_orangefrom MulLayer import *from AddLayer imp...原创 2021-09-17 16:07:44 · 93 阅读 · 0 评论 -
深度学习入门-(基于python的理论与实现)6
接下来看一下比较完整的代码:这个是train_neuralnetimport sys,ossys.path.append(os.pardir)import numpy as npimport matplotlib.pyplot as pltfrom dataset.mnist import load_mnistfrom two_layer_net import TwoLayerNet(x_train,t_train),(x_test,t_test) = load_mnist(flat原创 2021-09-16 21:26:31 · 565 阅读 · 0 评论 -
深度学习入门-基于python的理论与实现5
现在我们来搭建一个两层的神经网络import sys,ossys.path.append(os.pardir)from common.functions import *from common.gradient import numerical_gradientfrom dataset.mnist import load_mnistclass TwoLayerNet: def __init__(self,input_size,hidden_size,output_size,we原创 2021-09-16 17:00:06 · 460 阅读 · 0 评论 -
深度学习入门-(基于python的理论和实现)4
假如,我们现在手上有了 用于训练的数据 和 标签,还有一个简单的神经网络(他的权重w是随机产生的)我们可以做什么。x是0.6 ,0.9 t是0,0,1w是随机产生的2行3列的矩阵损失函数是交叉熵误差 带 log的那个我们可以求损失函数的梯度,(让损失函数沿着梯度的方向变小,就可以提高正确率了。当然这是后话)(先求一下损失函数的梯度)。求的是import sys,ossys.path.append(os.pardir)import numpy as npfrom c..原创 2021-09-14 21:56:33 · 63 阅读 · 0 评论 -
深度学习入门-(基于python的理论和实现)3
2里讲了损失函数,损失函数越小说明这个网络越好,现在怎么让它变小呢,引入数值微分概念要实现如下函数:import numpy as npimport matplotlib.pylab as pltdef function_1(x): return 0.01*x**2+0.1*xx = np.arange(0.0,20.0,0.1)y = function_1(x)plt.xlabel("x")plt.ylabel("y")plt.plot(x,y)plt.sh.原创 2021-09-13 10:13:04 · 74 阅读 · 0 评论 -
深度学习入门-(基于python的理论与实现)2
损失函数篇本章的主题是神经网络的学习。这里所说的“学习”是指从训练数据中 自动获取最优权重参数的过程。本章中,为了使神经网络能进行学习,将导 入损失函数这一指标。而学习的目的就是以该损失函数为基准,找出能使它 的值达到最小的权重参数。为了找出尽可能小的损失函数的值,本章我们将介绍利用了函数斜率的梯度法。神经网络以某个指标为线索寻找最优权重参数。神经网络的学习中 所用的指标称为损失函数(loss function)。这个损失函数可以使用任意函数, 但一般用均方误差原创 2021-09-12 21:59:06 · 133 阅读 · 0 评论 -
深度学习入门-(基于python的理论与实现)1-代码练习
import os, syssys.path.append(os.pardir)""""sys.path.appendsys.path.append(os.pardir)python程序中使用 import XXX 时,python解析器会在当前目录、已安装和第三方模块中搜索 xxx,如果都搜索不到就会报错。mnist_show.py文件的当前工作目录为ch03,但是load_mnist()函数的mnist.py文件在dataset目录下。因此,mnist_show.py文件不可...原创 2021-09-12 14:47:46 · 717 阅读 · 1 评论