relu

用numpy实现CNN卷积神经网络

我是研究僧i 提交于 2019-12-02 03:47:24
为了加深对卷积神经网络底层原理的理解,本文通过使用numpy来搭建一个基础的包含卷积层、池化层、全连接层和Softmax层的卷积神经网络,并选择relu作为我们的激活函数,选择多分类交叉熵损失函数,最后使用了mnist数据集进行了训练和测试。 关于卷积网络的详细原理和实现可参考下列文章: 刘建平Pinard:卷积网络前向反向传播算法 卷积层的反向传播 手把手带你 Numpy实现CNN 1、卷积层 卷积层的前向传播输出由卷积核和特征图作卷积运算得到,反向传播时需要计算kernel和bias的梯度以及delta的反向传播误差,kernel的梯度由原特征图和delta作卷积得到,bias每个通道的梯度由对delta每个通道直接求和得到,delta的反向传播误差由delta和旋转180度的卷积核作卷积运算得到。其中卷积运算在实现时先将特征图的对应部分和卷积核展开成了向量的形式,再作向量乘法运算,这样可以通过并行运算加快速度,实现代码如下: def img2col(x, ksize, stride): wx, hx, cx = x.shape # [width,height,channel] feature_w = (wx - ksize) // stride + 1 # 返回的特征图尺寸 image_col = np.zeros((feature_w*feature_w, ksize

pytorch-VGG网络

≯℡__Kan透↙ 提交于 2019-12-02 03:43:06
VGG网络结构 第一层: 3x3x3x64, 步长为1, padding=1 第二层: 3x3x64x64, 步长为1, padding=1 第三层: 3x3x64x128, 步长为1, padding=1 第四层: 3x3x128x128, 步长为1, padding=1 第五层: 3x3x128x256, 步长为1, padding=1 第六层: 3x3x256x256, 步长为1, padding=1 第七层: 3x3x256x256, 步长为1, padding=1 第八层: 3x3x256x512, 步长为1, padding=1 第九层: 3x3x512x512, 步长为1, padding=1 第十层:3x3x512x512, 步长为1, padding=1 第十一层: 3x3x512x512, 步长为1, padding=1 第十二层: 3x3x512x512, 步长为1, padding=1 第十三层:3x3x512x512, 步长为1, padding=1 第十四层: 512*7*7, 4096的全连接操作 第十五层: 4096, 4096的全连接操作 第十六层: 4096, num_classes 的 全连接操作 import torch from torch import nn class VGG(nn.Module): def __init__(self,

pytorch-Alexnet 网络

烈酒焚心 提交于 2019-12-02 03:36:16
Alexnet网络结构, 相比于LeNet,Alexnet加入了激活层Relu, 以及dropout层 第一层网络结构: 11x11x3x96, 步长为4, padding=2 第二层网络结构: 5x5x96x256, 步长为1, padding=1 第三层网络结构: 3x3x256x384,步长为1, padding=1 第四层网络结构: 3x3x256x384,步长为1,padding=1 第五层网络结构: 3x3x384x384, 步长为1,padding=1 第六层网络结构: 3x3x384x256, 步长为1, padding=1 第七层网络结构: 进行维度变化, 进行dropout操作, 进行(256*6*6, 4096)全连接操作 第八层:进行dropout操作,进行全连接操作(4096, 4096) 第九层: 输出层的操作, 进行全连接(4096, num_classes) from torch import nn class AlexNet(nn.Module): def __init__(self, num_classes): super(AlexNet, self).__init__() self.feature = nn.Sequential( nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=2), nn

利用Pytorch复现VGG-16网络

我是研究僧i 提交于 2019-12-02 01:18:58
利用Pytorch复现VGG-16网络: 根据吴恩达老师在深度学习课程中的讲解,AlexNet网络的基本流程为: 代码如下: import math import torch import torchvision import torch . nn as nn import torch . nn . functional as F import torchvision . models as models from torch . autograd import Variable class VGG16 ( nn . Module ) : def __init__ ( self , num_classes ) : super ( VGG16 , self ) . __init__ ( ) self . feature = nn . Sequential ( nn . Conv2d ( in_channels = 3 , out_channels = 64 , kernel_size = 3 , stride = 1 , padding = 1 ) , nn . ReLU ( inplace = True ) , nn . Conv2d ( in_channels = 64 , out_channels = 64 , kernel_size = 3 , stride = 1 ,

在tensorflow 2.0 中使用 relu 和 LeakyReLU

落花浮王杯 提交于 2019-12-01 07:22:12
网络上关于ReLU、LReLU等非常多的理论东西,可是大部分都是理论的,聚集怎么应用比较少。 在 Convolutional Neural Network (CNN) https://tensorflow.google.cn/tutorials/images/cnn?hl=en 的学习课程中,激活函数是 relu。 在学习过程中,看有的博文中说当激活函数 ReLU 效果不好时,建议使用LReLU试试,可是网上并没有特别详细的使用方法,只好去官网上找。 1 关于 relu 的常规使用方法 首先使用常规的relu —— 直接使用。 直接使用官网例子《Create the convolutional base》 https://tensorflow.google.cn/tutorials/images/cnn?hl=en#create_the_convolutional_base model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu'))

神经网络基础知识

我与影子孤独终老i 提交于 2019-12-01 06:16:35
1、前馈神经网络 前馈神经网络描述的是网络的结构,是指每一层的神经元只接受前一层神经元的输入,并且输出到下一层。 2、BP神经网络 百度百科:BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络。BP即Back Peopagation,就是常用的反向传播算法。 3、MLP MLP是多层感知机也被称为多层神经网络,是一种前向结构,包括输入层、隐藏层和输出层。至少三层结构(即隐藏层只有一层网络),如图所示 4、CNN CNN就是著名的卷积神经网络,是一种前馈神经网络。CNN不同于前面的网络只有线性连接,CNN包括卷积(convolution)操作,汇合(pooling)操作和非线性激活函数映射(即线性连接)。经典的CNN网络有Alex-Net、VGG-Nets、Network-In-Network等 5、RNN RNN是循环神经网络 6、激活函数 激活函数又称为非线性映射函数,将神经元的输入映射到输出。常用的激活函数包括:Sigmoid型函数、tanh(x)型函数、Relu(修正线性单元)、Leaky Relu、参数化Relu、随机化Relu和ELU(指数化线性单元) 7、目标函数 目标函数是计算预测结果和真是结果的误差。目标函数可以分为分类任务的目标函数和回归任务的目标函数 分类任务的目标函数包括:交叉熵损失函数、合页损失函数、坡道损失函数、大间隔交叉熵损失函数、中心损失函数

tensorflow手写数字识别

你离开我真会死。 提交于 2019-12-01 05:29:26
import tensorflow as tf from keras.utils import np_utils (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() SHAPE = 28 * 28 CLASSES = 10 x_train = x_train.reshape(x_train.shape[0], SHAPE) x_test = x_test.reshape(x_test.shape[0], SHAPE) y_train = np_utils.to_categorical(y_train, CLASSES) y_test = np_utils.to_categorical(y_test, CLASSES) model = tf.keras.models.Sequential([ tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='binary_crossentropy'

深度学习入门初步总结

▼魔方 西西 提交于 2019-11-30 19:55:51
深度学习入门初步总结 前言 在学习深度学习之前,从某乎上看了相关的学习路线,又通过师兄们的请教,最后选择了在linux环境下,用python进行代码的编写。由于自己在这之前,对linux没有接触过,所以在安装Ubuntu以及在环境安装下还是走了不少弯路,后续会把相关的安装教程也写在博客中。在学习之前,可以说自己真的还是个小白,很多东西都不会,望以后可以和大家多多交流,一些想法可能不正确,望各位也能指出来。 一、技术储备 python基本语法 由于自己之前学过python,在这里就不多做总结了 Numpy库 首先,numpy是python的外部库,支持大量的维度数组与矩阵运算以及大量的数学函数库。别人封装好的东西为什么不用?不过在有些库用之前,最好去扒一扒它的底层,不要仅仅停留在会用上,不然太容易被淘汰了。 然后,numpy库可以直接通过pip3安装,下面这条命令即可 sudo apt-get install python-numpy 其次,学会numpy的几条基本语法,其它的在有需要的时候再去问度娘,下面归纳几个经常会用到的语法。 import numpy as np np.empty([3,2], dtype = int) #创建一个空的3行2列的矩阵,dtype为指定类型,默认为float类型 np.zeros(5) #创建一个长度为5的数组 np.zeros_like(x)

神经网络模型(Backbone)

岁酱吖の 提交于 2019-11-30 19:52:14
  自己搭建神经网络时,一般都采用已有的网络模型,在其基础上进行修改。从2012年的AlexNet出现,如今已经出现许多优秀的网络模型,如下图所示。 主要有三个发展方向:     Deeper:网络层数更深,代表网络VggNet     Module: 采用模块化的网络结构(Inception),代表网络GoogleNet     Faster: 轻量级网络模型,适合于移动端设备,代表网络MobileNet和ShuffleNet     Functional: 功能型网络,针对特定使用场景而发展出来。如检测模型YOLO,Faster RCNN;分割模型FCN, UNet   其发展历史可以分为三个阶段:   这些模型在ImageNet上的表现效果对比如下:    1. LeNet-5   LeNet-5是LeCun在1998年的论文中 Gradient-Based Learning Applied to Document Recognition 提出的网络模型,其结构如下:(其中卷积为5*5的kernel,下采样为2*2的MaxPooling),其结构比较简单,关于LeNet-5结构设计的详细分析,参见: 参考一 , 参考二 2. AlexNet   AlexNet是Alex Krizhevsky在2012的文章ImageNet Classification with Deep

Numpy 快速实现 Relu

不问归期 提交于 2019-11-30 19:21:08
x[x< 0] = 0 x_new=x*(x>0) x_new=(abs(x) + x) / 2 三种比较好的方法,前者会改变x,后两者可以不改变x,参考文献1中的计算方式有问题,没有考虑x改变对loop的影响,所以这几种方式哪种效率更高仍存疑 参考文献: https://blog.csdn.net/u010137742/article/details/79302067 https://stackoverflow.com/questions/32109319/how-to-implement-the-relu-function-in-numpy# 来源: https://www.cnblogs.com/jhc888007/p/11637209.html