python神经网络

神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集)

China☆狼群 提交于 2019-12-02 11:16:29
神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集) 学习前言 什么是AlexNet模型 训练前准备 1、数据集处理 2、创建Keras的AlexNet模型 开始训练 1、训练的主函数 2、Keras数据生成器 3、主训练函数全部代码 训练结果 学习前言 最近在做实验室的工作,要用到分类模型,老板一星期催20次,我也是无语了,上有对策下有政策,在下先找个猫猫狗狗的数据集练练手,快乐极了。 什么是AlexNet模型 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。 如下是其网络的结构,现在看来还是比较简单的。 这是一个AlexNet的网络结构图,其实并不复杂,很好的反应了AlexNet的结构: 1、一张原始图片被resize到(224,224,3); 2、使用步长为4x4,大小为11的卷积核对图像进行卷积,输出的特征层为96层,输出的shape为(55,55,96); 3、使用步长为2的最大池化层进行池化,此时输出的shape为(27,27,96) 4、使用步长为1x1,大小为5的卷积核对图像进行卷积,输出的特征层为256层,输出的shape为(27,27

(转)深度学习入门路线

萝らか妹 提交于 2019-12-02 10:49:40
/*------深度学习理论------------------------**/ 1. 深度学习介绍、全连接神经网络 为什么要做深读学习而不是宽度学习? 2. 反向传播算法 BP算法手工推导 3. 使用Keras实现全连接神经网络完成手写数字识别 4. mini-batch Gradient Descent 5. 神经网络的优化(0)----概述 神经网路的优化(1)----激活函数:梯度消失问题、ReLU、Maxout 神经网络的优化(2)----优化器、自适应学习率:Adagrad、RMSProp、Momentum、Adam 神经网络的优化(3)----Early Stopping 神经网络的优化(4)----正则化 神经网络的优化(5)----Dropout 6. 卷积神经网络 CNN结构演化 CNN的原理 怎么用Keras实现CNN CNN学到的到底是啥? Lenet-5 VGG GoogleNet 7. 循环神经网络 RNN的原理 LSTM /*--------环境搭建及使用--------------------**/ ubuntu18.10 + RTX2080Ti + CUDA10.0 + cuDNN7.5.0 + Anaconda(conda 4.5.12) + TensorFlow-gpu1.13.1 安装 各种环境查看 常见问题及解决 ubuntu16.04

卷积神经网络基本概念(卷积篇 01)

我是研究僧i 提交于 2019-12-01 18:45:17
Computer Vision Theory CNN Part 1 简介 1.1 我先后在以下场景下见到过卷积 微分方程 傅立叶变换及其应用 概率论 卷积神经网 1.2 相关阅读 推荐一下 Christopher Olah 的理解卷积的blog http://colah.github.io/posts/2014-07-Understanding-Convolutions/ 数学论证 https://www.dsprelated.com/freebooks/mdft/Convolution.html 1.3 本文将介绍卷积在计算机图像处理上的应用,所以限定讨论条件 离散的 2-维卷积(注:2-维的卷积相当于depth=1的3-维的卷积) 篇幅有限具体的数学和理解请参考相关阅读 Part 2 原理和代码实现 2.1 四种方式简单介绍 无损精度算法 2.1.1滑动窗口 最直观的方法 大规模加速比较困难 某些特定场景下速度比较快 2.1.2 im2col 私以为最主流的实现方式(caffe/MXNet 等使用的是这种方式) 一般来说速度较快(空间换时间) 卷积过程转化成了GEMM过程(被各种极致优化) 算法: 将没有个需要做卷积的矩阵平摊为一个一维向量 将所有的向量组成新的矩阵 新矩阵和kernal做矩阵乘法 得到结果 有损精度算法 FFT/Winograd的卷积算法,它们都是通过:

史上最全的机器学习资料(上)

情到浓时终转凉″ 提交于 2019-12-01 06:00:33
摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习牵涉的编程语言十分之广,包括了MATLAB、Julia、R、Perl、Python、Clojure、Ruby等等。 为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 目录 C 通用机器学习 计算机视觉 C++ 计算机视觉 通用机器学习 自然语言处理 序列分析 手势识别 Common Lisp 通用机器学习 Clojure 自然语言处理 通用机器学习 数据分析 /数据可视化 Erlang 通用机器学习 Go 自然语言处理 通用机器学习 数据分析 /数据可视化 Haskell 通用机器学习 Java 自然语言处理

深度学习入门初步总结

▼魔方 西西 提交于 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)

Python对图片增加维度

女生的网名这么多〃 提交于 2019-11-30 13:51:11
学习pytorch框架时发现的一个技巧,选中本地图片经过神经网络提取特征时,由于神经网络要求图片四维——数量×通道数×长×宽,而本地选取单张图片只有:通道数×长×宽,用numpy.reshape()可以对其扩维。 import numpy from PIL import Image img = Image.open('/home/1.jpg') #将PIL转换为numpy.array才能用reshape函数 img = np.array(img) img = img.reshape(1,3,32,32) 这样就不会因为维度问题再报错。 PS:神经网络要求tensor类型,注意转换 来源: CSDN 作者: 心里有党 链接: https://blog.csdn.net/weixin_39386156/article/details/89388776

PyTorch学习笔记

瘦欲@ 提交于 2019-11-30 12:49:33
【PyTorch深度学习60分钟快速入门 】Part1:PyTorch是什么?来源:https://www.cnblogs.com/leejack/p/8370634.html import torch import numpy as np #用于替代NumPy(torch对象叫张量,带前缀和括号,并用逗号分隔,numpy对象叫数组,用空格分隔),#torch可以使用GPU的计算力,一种深度学习研究平台,可以提供最大的灵活性和速度 x = torch.Tensor(5, 3) #创建一个5x3且未初始化的矩阵,如果将首字母大写的Tensor改成小写tensor,会报错 #print(x) x = torch.rand(5, 3)#创建一个随机初始化的矩阵rand表示0~1之间均匀分布的随机数 #print(x) #print(x.size()) y = torch.rand(5, 3) #print(x + y) #print(torch.add(x, y)) result = torch.Tensor(5, 3) #print(result) torch.add(x, y, out=result) #print(result) y.add_(x) #原地替换,任何原地改变张量值的操作后缀都是固定的_,例如:x.copy_(y)、x.t_(),都将原地改变x的值。 #print(y

CNN反向传播更新权值

那年仲夏 提交于 2019-11-30 05:09:40
背景 反向传播 (Backpropagation)是训练神经网络最通用的方法之一,网上有许多文章尝试解释 反向传播 是如何工作的,但是很少有包括真实数字的例子,这篇博文尝试通过离散的数据解释它是怎样工作的。 Python实现的反向传播 你能使用Python来实现 反向传播 ,我曾经在 this Github repo 上实现了 反向传播 算法。 反向传播的可视化 显示神经网络学习时相互作用的可视化,检查我的 Neural Network visualization 。 另外的资源 如果你发现这个教程对你有用并且想继续学习神经网络以及它的应用,我强烈建议你看Adrian Rosebrock优秀的教程 Getting Started with Deep Learning and Python 。 概述 对于这个教程,我们将使用2个输入神经元、2个隐含层神经元以及2个输出层神经元组成一个神经网络,另外,隐含层和输出层神经元各包含一个偏差。 这是基本结构: 目的让神经网络工作,我们对 权重 、 偏差 和训练的输入/输出设置一个初始值: 反向传播 的目的是优化权重,以便于让神经网络学习怎样正确的把任意的输入映射到输出中。 这篇教程的剩余部分我们将要和单一的训练集工作:输入0.05和0.10,我们想要神经网络输出0.01和0.99。 前向反馈 为了开始,当前给定权重和偏差以及输入值0.05和0

神经网络的纠结过往

僤鯓⒐⒋嵵緔 提交于 2019-11-29 17:25:37
神经网络的纠结过往 其实我接触神经网络比较早。 在2005年,读研究生时,讲测量数据处理的老师就是做这个的,跟我们讲小波之类的内容,听到了能逼近定理。 只不过那位老师在前几年因为肺癌去世。 那时用matlab,我也不敢兴趣。 期间一直只用c#,觉得python太难用了,一直等着C#的改进。 在200x年,一直探讨C#之于科学计算,超越numpy,matlab的理念,期待C#的改进和tf的集成。 到2019年,再也等不到C#版本了。 只用改变心态,摈弃万难,转向tf和py,现在感觉落后好多年了。 来源: https://www.cnblogs.com/xiexiaokui/p/11524406.html

第3章 神经网络

有些话、适合烂在心里 提交于 2019-11-29 17:05:02
上一章我们学习了感知机。关于感知机,既有好消息,也有坏消息。好消息是,即便对于复杂的函数,感知机也隐含着能够表示它的可能性。上一章已经介绍过,即便是计算机进行的复杂处理,感知机(理论上)也可以将其表示出来。坏消息是,设定权重的工作,即确定合适的、能符合预期的输入与输出的权重,现在还是由人工进行的。上一章中,我们结合与门、或门的真值表人工决定了合适的权重。 神经网络的出现就是为了解决刚才的坏消息。具体地讲,神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。本章中,我们会先介绍神经网络的概要,然后重点关注神经网络进行识别时的处理。在下一章中,我们将了解如何从数据中学习权重参数。 3.1 从感知机到神经网络 神经网络和上一章介绍的感知机有很多共同点。这里,我们主要以两者的差异为中心,来介绍神经网络的结构。 3.1.1 神经网络的例子 用图来表示神经网络的话,如图3-1所示。我们把最左边的一列称为 输入层 ,最右边的一列称为 输出层 ,中间的一列称为中间层。中间层有时也称为 隐藏层 。“隐藏”一词的意思是,隐藏层的神经元(和输入层、输出层不同)肉眼看不见。另外,本书中把输入层到输出层依次称为第0层、第1层、第2层(层号之所以从0开始,是为了方便后面基于Python 进行实现)。图3-1中,第0层对应输入层,第1层对应中间层,第2层对应输出层。 图3-1 神经网络的例子