relu

Keras基础自学一(基本模型+自动评估)

我与影子孤独终老i 提交于 2020-01-30 04:41:21
Keras容易入门,比起tensorflow和PyTorch 虽然容易上手,但还是有些不太容易理解,建议学的时候多看书和视频,慢慢理解 from keras.models import Sequential#顺序模型 from keras.layers import Dense #Dense,表示全连接层 from keras.layers import Dropout#放弃层 import numpy as np # 设定随机数种子 np.random.seed(7) # 导入数据 dataset = np.loadtxt('D:\example\Keras\pima-indians-diabetes.csv', delimiter=',') # 分割输入x和输出Y,X是已知X,Y是标准答案 x = dataset[:, 0 : 8]#取二维数组中第1(m)维到7维(第n-1维)的所有数据,相当于取第1(m)列到第七(n-1)列的所有数据 yTrain = dataset[:, 8]#取二维数组中第9维的所有数据,相当于取第9列的所有数据 # 创建模型 model = Sequential()#顺序模型,是多个网络层的线性堆叠 model.add(Dense(units=12, input_dim=8, activation='relu'))#输入节点8个,激活函数relu,隐

激活函数

拥有回忆 提交于 2020-01-30 04:24:33
目录 为什么需要激活函数 激活函数 常见的激活函数 Sigmoid Tanh ReLU Leaky ReLU ELU Maxout Softmax 结论 如何选择合适的激活函数 为什么需要激活函数 神经网络单个神经元的基本结构由线性输出 Z 和非线性输出 A 两部分组成。如下图所示: 其中,f(x) 即为线性输出 Z,g(x) 即为非线性输出,g() 表示激活函数。通俗来说,激活函数一般是非线性函数,其作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。 举个简单的例子,二分类问题,如果不使用激活函数,例如使用简单的逻辑回归,只能作简单的线性划分,如下图所示: 如果使用激活函数,则可以实现非线性划分,如下图所示: 可见,激活函数能够帮助我们引入非线性因素,使得神经网络能够更好地解决更加复杂的问题。 有个问题,为什么激活函数一般都是非线性的,而不能是线性的呢?从反面来说,如果所有的激活函数都是线性的,则激活函数 g(z)=z,即 a=z。那么,以两层神经网络为例,最终的输出为: 经过推导我们发现网络输出仍是 X 的线性组合。这表明,使用神经网络与直接使用线性模型的效果并没有什么两样。即便是包含多层隐藏层的神经网络,如果使用线性函数作为激活函数,最终的输出仍然是线性模型。这样的话神经网络就没有任何作用了。因此,隐藏层的激活函数必须要是非线性的。

Keras基础自学三(交叉验证)

拟墨画扇 提交于 2020-01-30 03:52:20
from keras.models import Sequential from keras.layers import Dense import numpy as np from sklearn.model_selection import StratifiedKFold seed = 7# 设定随机数种子 np.random.seed(seed) dataset = np.loadtxt('D:\example\Keras\pima-indians-diabetes.csv', delimiter=',')# 导入数据 # 分割输入x和输出Y x = dataset[:, 0 : 8]#取二维数组中第1(m)维到7维(第n-1维)的所有数据,相当于取第1(m)列到第七(n-1)列的所有数据 yTrain = dataset[:, 8]#取二维数组中第9维的所有数据,相当于取第9列的所有数据 kfold = StratifiedKFold(n_splits=10, random_state=seed, shuffle=True) cvscores = [] for train, validation in kfold.split(x, yTrain): model = Sequential() # 创建模型 model.add(Dense(12, input_dim=8,

Keras基础自学六(参数调试)

守給你的承諾、 提交于 2020-01-30 03:05:55
from keras.models import Sequential #按顺序建立 模型 from keras.layers import Dense #Dense 全连接层 ; Activation 激活函数层 from sklearn.model_selection import GridSearchCV#参数调试函数 from keras.wrappers.scikit_learn import KerasClassifier#分类函数 import numpy as np import time,datetime a=datetime.datetime.now() # 构建模型 def create_model(optimizer='adam', init='glorot_uniform'): model = Sequential()#构建顺序模型 model.add(Dense(units=12, kernel_initializer=init, input_dim=8, activation='relu'))#输入层8个节点,隐藏层12个,激活函数relu model.add(Dense(units=8, kernel_initializer=init, activation='relu'))#隐藏层8个,激活函数relu model.add(Dense(units

『cs231n』卷积神经网络的可视化与进一步理解

拈花ヽ惹草 提交于 2020-01-29 15:45:58
cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非学者所著,看着也更舒服一点。 另,本文涉及了反向传播的backpropagation算法,知乎上有个回答很不错,备份到文章里了,为支持原作者,这里给出知乎 原文连接 可视化理解卷积神经网络 这张PPT是本节课的核心,下面我来说说这张图。 可视化神经网络的思想就是构建一个逆向的卷积神经网络,但是不包括训练过程,使用原网络各个层的feature map当作输入,逆向生成像素级图片(各个层对应的具体逆操作实现方法下面的文献中有介绍),目的是研究每一层中每一个神经元对应的(或者说学习到的)特征到底是什么样的。 我们首先获取某一层的feature map,然后将除了想要研究的那个神经元之外所有神经元置零,作为返卷积网络的输入(a图所示),经过逆向重构后,得到的图片就反映了这个神经元学习到的特征。 Relu层的逆处理得到了特殊关注,向前传播中,小于零的神经元直接置零(b1),如果按照计算梯度的反向传播算法( backpropagation )的话那么应该在向前传播时置零的位置仍然置零(b2),而原论文按照deconvent的方法,相当于把Relu对称化,直接对反向的特征图进行了标准的Relu

深度学习_经典网络_AlexNet

拈花ヽ惹草 提交于 2020-01-29 08:02:42
一.AlexNet模型介绍 AlexNet是由 A l e x Alex A l e x K r i z h e v s k y Krizhevsky K r i z h e v s k y 提出的首个应用于图像分类的深层卷积神经网络,该网络在2012年ILSVRC(ImageNet Large Scale Visual Recognition Competition)图像分类竞赛中以15.3%的top-5测试错误率赢得第一名。 AlexNet使用GPU代替CPU进行运算,使得在可接受的时间范围内模型结构能够更加复杂, 它的出现证明了深层卷积神经网络在复杂模型下的有效性 ,使CNN在计算机视觉中流行开来,直接或间接地引发了深度学习的热潮。 二.模型结构 如上图所示,除去下采样(池化层)和局部响应规范化操作(Local Responsible Normalization,LRN),AlexNet一共包含8层,前5层由卷积层组成,而剩下的3层为全连接层。网络结构分为上下两层,分别对应两个GPU的操作过程,除了中间某些层(C 3 卷积层和F 6-8 全连接层会有GPU间的交互),其他层两个GPU分别计算结果。最后一层全连接层的输出作为softmax的输入,得到1000个图像分类标签对应的概率值。 除去GPU并行结构的设计 ,AlexNet网络结构和LeNet十分相似。 三

利用简单的全连接神经网络来预测1月28日的武汉新型冠状病毒累计确诊病例数

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-28 08:26:29
代码背景 这几天,由于新型冠状病毒的爆发,每天的新确诊人数都让早上起床的我感到吃惊!大家为了给社会贡献一份力量,即使在春节期间,都可以待在家里少外出。各大IT企业纷纷捐钱捐物资,为抗战一线出力!而此时待在家里的我们能做些什么呢? 由于我是学计算机科学与技术的大三学生,想在待在家的时间,利用专业知识,预测一下下一天的确诊人数。因此,就简单地写了一个基础代码,跑了一下,得到了一个结果,准确率不敢保证,毕竟数据有限hhh~ 环境 Windows10 python3.7.4 pytorch1.2.0 matplotlib(忘了版本号) 建模 在这里,因变量的我选的是每天的累计确诊人数,而自变量即特征其实有很多,但是我只能获取时间特征,因此只能简单地预测一下下一天的累计确诊人数。 通过观察每天的数据,我们可以很轻松地得出这是一个非线性回归问题,而对于处理非线性问题,用神经网络再合适不过了。因为神经网络每层都可以拥有非线性的激活函数,因此可以较好地拟合非线性数据。(数据量少我就不考虑过拟合问题了) 我选取了从1月20到27号的数据作为训练集,明天的结果自动的成为测试集。建立了一个输入层,两个隐藏层,一个输出层的全连接神经网络。数据集长度为BatchSize进行训练。 在激活函数上用来tanh和relu,tanh具有较好的非线性,relu具有较稳定的梯度。 Tanh tanh是双曲函数中的一个

图像多分类——卷积神经网络

懵懂的女人 提交于 2020-01-26 14:38:45
例子参考: https://www.jiqizhixin.com/articles/2019-05-15-2 数据集: https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html 将获取到原始数据集,其中,有三个文件, Movie Poster Dataset是1980-2015年部分影片海报图片, Movie Poster Metadata是1980-2015年部分影片的数据详情,example: Readme则是对 Movie Poster Metadata文件里边的字段解释,在训练过程中只用到IMPId和 Genre(影片类型)。 步骤: 数据处理 获取到影片的类型对影片类型实现one-hot编码,如果是属于哪个类型,用1表示,其他为0,得到如下文件, 考虑到特征的相关性,删除影片比较少的类型列(将数量小于50的类型列进行删除),最终留下22个电影类型,如下: 将电影类型作为最终的结果值,然后加载图片: for i in tqdm(range(train.shape[0])): img = image.load_img('D:/aayu/实例/图像多分类/data/Images/'+train['ID'][i]+'.jpg',target_size=(400,400,3)) img = image.img

pytorch 踩坑之旅(1)

巧了我就是萌 提交于 2020-01-25 05:26:25
pytorh 训练过程的坑 1、报错:input type (CUDAFloatTensor) and weight type (CPUFloatTensor) should be same. 先考虑:模型没有加载到GPU上,解决module.cuda() 其次: 假设网络模型是: 修改为如下: 上面的图本身没有语法错误,而且在CPU上也能够正常运行,但是加载到GPU上的时候,在model = model.cuda()的作用下,网络其他部分已经被部署到GPU上,而encoder里面的结构还在cpu上面,所以需要改成下面的格式。经测试下面的结构可以正常运行。 2、runtimeerror:one of variables needed for gradient computation has been modified by an inplace operation… 主要是我在搭建网络架构时,在考虑特征融合时采用add的方式,所以在卷积和BN之后没有直接加relu,而是在进入下一次的卷积的时候才加上了relu,所以不能像之前 nn.ReLU(inplace=True),而是直接nn.ReLU()。 inplace=True 意思是: 是否将计算得到的值直接覆盖之前的值 计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间

Pytorch常用包

偶尔善良 提交于 2020-01-23 20:14:08
torch:张量的有关运算。如创建、索引、连接、转置、加减乘除、切片等 torch.nn: 包含搭建神经网络层的模块(Modules)和一系列loss函数。如全连接、卷积、BN批处理、dropout、CrossEntryLoss、MSELoss等 torch.nn.functional:常用的激活函数relu、leaky_relu、sigmoid等 torch.autograd:提供Tensor所有操作的自动求导方法 torch.optim:各种参数优化方法,例如SGD、AdaGrad、Adam、RMSProp等 torch.utils.data:用于加载数据 torch.nn.init:可以用它更改nn.Module的默认参数初始化方式 torchvision.datasets:常用数据集。MNIST、COCO、CIFAR10、Imagenet等 torchvision.modules:常用模型。AlexNet、VGG、ResNet、DenseNet等 torchvision.transforms:图片相关处理。裁剪、尺寸缩放、归一化等 -torchvision.utils:将给定的Tensor保存成image文件 来源: CSDN 作者: 立志正常毕业的二狗子 链接: https://blog.csdn.net/qq_43270479/article/details