relu

keras的mnist跑起来

我是研究僧i 提交于 2019-12-05 08:55:04
异或问题是神经网络解决的最基本的问题,代码为 from keras.models import Sequential import keras.layers as KL #import numpy as np import pdb INPUTS = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) #输入为np.array()类型 OUTPUTS = np.array([[0], [1], [1], [0]]) model = Sequential() #pdb.set_trace() model.add(KL.Dense(units=64, activation='relu',input_shape=(2,)))#2为输入个数 model.add(KL.Dense(units=64, activation='relu')) model.add(KL.Dense(units=1, activation='sigmoid'))#1为输出个数 model.compile(loss='binary_crossentropy', #采用binary_crosssentropy训练 optimizer='sgd', metrics=['accuracy']) model.fit(INPUTS, OUTPUTS, epochs=1000, batch

tensorflow 神经网络基本使用

僤鯓⒐⒋嵵緔 提交于 2019-12-05 08:49:26
TF使用ANN(artificial neural network) 简介 受到生物神经网络的启发 发展历史 生物神经网络单元 逻辑运算单元:and、or、xor等运算 感知机(perceptron): h w ( x ) = s t e p ( w T ⋅ x ) //--> 多层感知机和反向传播(multi-perceptron and backpropagation) perceptron sklearn中也有感知机的库,其参数学习规则是 w n e x t s t e p i , j = w i , j + η ( y ^ j − y j ) x i //--> 其中 η //--> 是学习率 感知机与SGD很类似 逻辑斯蒂回归可以给出样本对于每一类的分类概率,而感知机则是直接根据阈值给出分类结果,因此一般在分类时,逻辑斯蒂回归相对感知机来说会常用一点 感知机是线性的,难以解决非线性问题;但是如果采用多个感知机,则可以避免这个问题 多层感知机和反向传播 感知机的激活函数是step函数,得到的结果非0即1,无法用于反向传播(需要求取微分),因此利用Logistic函数 σ ( z ) = 1 / ( 1 + e x p ( − z ) ) //--> 替代之前的step函数,这个logistic函数也被称为 激活函数 常用的激活函数有 logistic函数 双曲正切函数: t

TensorFlow 学习笔记

五迷三道 提交于 2019-12-05 08:48:05
TensorFlow是一个Google开源的深度学习框架。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。以下内容是基于Udacity深度学习课程的学习笔记。 安装TensorFlow 利用Conda来安装TensorFlow,需要安装一个TensorFlow环境和所需要的包。 OSX或Linux conda create -n tensorflow python = 3.5 source activate tensorflow conda install pandas matplotlib jupyter notebook scipy scikit -learn conda install -c conda -forge tensorflow Windows conda create -n tensorflow python = 3.5 activate tensorflow conda install pandas matplotlib jupyter notebook scipy scikit -learn conda install -c conda -forge tensorflow

【深度学习】 Keras 实现Minst数据集上经典网络结构(DeepDense、LeNet、AlexNet、ZFNet)分类

 ̄綄美尐妖づ 提交于 2019-12-05 08:47:34
实验简介   本次实验一方面是熟悉Keras 序列式(Sequential)模型的使用,另一方面是复现早期的经典网络结构来学习神经网络搭建的技巧。数据集采用的是熟知的Minst手写识别,框架采用的是tensorflow、Keras,数据集和框架的导入和安装请点击 这里 。经典的网络结构已有大量博客进行理论分析,这里只给出代码仅供参考,关于神经网络结构的发展,推荐大家看 这篇文章 。 DeepDense   这个是自己定义的名字,也就是深度全连接网络。 # -*- coding: utf-8 -*- """ Created on Thu Jun 13 11:19:33 2019 @author: YLC """ from keras . datasets import mnist from keras . models import Sequential from keras . layers . core import Dense , Activation , Dropout from keras . utils import np_utils #数据集导入模块 ( X_train , y_train ) , ( X_test , y_test ) = mnist . load_data ( ) ; #参数定义模块 img_rows , img_cols = 28 , 28 #

pytorch框架下的Finetune 以及ResNet50 代码

偶尔善良 提交于 2019-12-05 07:27:22
Resnet 50 # -*- coding: utf-8 -*- import torch.nn as nn import math import torch.utils.model_zoo as model_zoo class residual_block(nn.Module): expansion = 4 def __init__(self, inplanes, planes, stride=1, downsample = None): super(residual_block, self).__init__() self.conv1 = nn.Conv2d(inplanes, planes, bias=False, kernel_size=1) self.bn1 = nn.BatchNorm2d(planes) self.conv2 = nn.Conv2d(planes, planes, stride = stride, kernel_size=3 , padding=1, bias = False) self.bn2 = nn.BatchNorm2d(planes) self.conv3 = nn.Conv2d(planes, planes*4, kernel_size=1,bias=False) self.bn3 = nn.BatchNorm2d(planes * 4)

Pytorch intermediate(二) ResNet

妖精的绣舞 提交于 2019-12-05 07:24:46
人生苦短,我学torch。 Pytorch 中文文档 实现了残差网络, 残差网络结构 。代码比之前复杂很多 conv3x3:将输入数据进行一次卷积,将数据转换成为,残差块需要的shape大小 ResidualBlock:残差块,也是所谓的恒等块。为什么被称为恒等块,大概可以理解为经过几层卷积过后大小形状不变,并且能和输入相加;如果形状变了,那么输入也会利用一次卷积得到和残差块输出大小相同的数据块。 可以看到在残差块中有一个判断,就是判断输入数据是否被向下采样,也就是形状是否变化,如果变化就进行上述处理。 ResNet:构建一个完整的残差网络。传入参数是一个残差块的结构,还有每一层中残差块的个数元组。重点看以下其中的层次结构。 conv3x3:将输入图片变成16通道 输入通道数:16 layer1:输入通道:16,输出通道:16,padding = 0,stride = 0 layer2:输入通道:16,输出通道:32,padding = 0, stride = 2。由于输入不等于输出通道数,增加了一层卷积层,并且带有对应的stride。 layer3:输入通道:32,输出通道:64,其余同上 pooling:均值池化 fc:全连接 update_lr:在每个epoch之后实现对learning_rate的下降 同样由于加入了batchnorm层,测试时需要使用model.eval(

【深度学习】【python】深度残差网络Resnet的实现 中文注释版

爱⌒轻易说出口 提交于 2019-12-05 07:21:35
【深度学习】【python】深度残差网络Resnet的实现 中文注释版 参考 https://github.com/wenxinxu/resnet_in_tensorflow 环境要求 python3.5 tensorflow 1.4 pytorch 0.2.0 tensorlayer 本程序需要tensorflow与tensorlayer. 程序如下: """ 深度残差网络 source: 'https://github.com/wenxinxu/resnet_in_tensorflow' 2016/12/27 """ import sys import numpy as np import tensorflow as tf import tensorlayer as tl from tensorlayer.files import load_cifar10_dataset def tensor_summary (tensor) : """显示张量的标量和直方图信息""" # 获取张量tensor的name; tensor_name = tensor.op.name # tf.summary.histogram用来显示直方图信息:一般用来显示训练过程中变量的分布情况; tf.summary.histogram(tensor_name+ "/activations" ,

pytorch Resnet 网络结构

╄→尐↘猪︶ㄣ 提交于 2019-12-05 07:21:04
最近在学习廖老师的pytorch教程,学到Resnet 这部分着实的烧脑,这个模型都捣鼓了好长时间才弄懂,附上我学习过程中最为不解的网络的具体结构连接(网上一直没有找到对应网络结构,对与一个自学的学渣般的我,很是无奈,所以搞懂后我就...分享给有需要的的你了) 我们先大致了解一下残差模型 ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域都纷纷使用ResNet,Alpha zero也使用了ResNet,所以可见ResNet确实很好用。 下面我们从实用的角度去看看ResNet。 1.ResNet意义 随着网络的加深,出现了 训练集 准确率下降的现象,我们可以确定 这不是由于Overfit过拟合造成的 (过拟合的情况训练集应该准确率很高);所以作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深,其中引入了全新的结构如图1; 这里问大家一个问题 残差指的是什么 ? 其中ResNet提出了两种mapping:一种是identity mapping,指的就是图1中”弯弯的曲线”,另一种residual mapping,指的就是除了”弯弯的曲线“那部分,所以最后的输出是 y=F(x)+x

一目了然卷积神经网络 - An Intuitive Explanation of Convolutional Neural Networks

冷暖自知 提交于 2019-12-05 07:14:14
前言:简单翻译了一篇介绍卷积网络的文章,以学习了解卷积网络运行机制。 An Intuitive Explanation of Convolutional Neural Networks 原文地址: https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/comment-page-4/?unapproved=31867&moderation-hash=1ac28e426bc9919dc1a295563f9c60ae#comment-31867 一、什么是卷积神经网络、为什么卷积神经网络很重要?   卷积神经网络<Convolutional Neural Networks>简称ConvNets 或CNNs 属于分类神经网络,在某些领域已经被验证非常有效,比如图像识别、分类领域。ConvNets 不仅仅在人脸、物体、交通标志识别成功而且还助力于机器视觉与自动驾驶。 图 1: 来源 [ 1 ]   在上图 图1 中ConvNet 可以识别场景并且系统可以建立相关关联(“一个足球运动员在踢足球”),然而在下图 图2 的示例中展示了ConvNets 用于识别物体、人和动物。最近,ConvNets 在某些自然语言处理任务(例如句子分类)中也有效。[ 注:微软小冰、苹果Siri 等,读者也可以调用微软AI搭建自己的应用程序

目标检测:AlexNet

霸气de小男生 提交于 2019-12-05 04:30:31
AlexNet是2012年ImageNet竞赛冠军。 它是在CNN的基础上设计的,CNN(卷积神经网络)可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀。CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春。AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。添加了ReLU、Dropout和LRN等。 (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。 (2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。 (3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。 (4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大