ubuntu之路——day18 用pytorch完成CNN
本次作业:Andrew Ng的CNN的搭建卷积神经网络模型以及应用(1&2)作业目录参考这位博主的整理:https://blog.csdn.net/u013733326/article/details/79827273
今天要实现的是识别手势姿势表达的数字
我的Git传送门:https://github.com/VVV-LHY/deeplearning.ai/tree/master/CNN/RecognizeGestureNum
本来是接着day17用了numpy编了一个卷积层和池化层的前向传播,然后后向传播更麻烦了,Andrew Ng的课上也开始用tensorflow和kears了。所以我开始用pytorch完成CNN的编程作业,但是因为Andrew的例子和里面加载数据全用的tensorflow,我决定发挥主观能动性,自己转化pytorch框架。(史前巨坑,因为没用过pytorch,昨天到今天遇见好多天坑)
1.pytorch的默认图片处理顺序
NxCxHxW 意思是通道C在前面,我们以前的做法是numpy和其他默认读法channel在最后面,所以需要下面的方法:
np的array数组有一个transpose方法,比如:
原来的通道是a = (N,H,W,C)
转化 a = a.transpose(0, 3, 1, 2)意思是N不变,C从第三个换到第二个,W和C分别后移一位
新的 a = (N, C, H, W)
2.torchvision包里面的dataset和dataloader
前者是把数据和标签合为dataset并且可以返回长度、还可以在方法里面转换Tensor,还可以压缩(0,255)为(0,1)用torchvision.transfroms,可以看官方文档有很多方法
dataloader可以加载dataset并且做mini batch的处理 shuffle洗牌等等
但是dataset需要自己重构类里面的方法,具体可以自行搜索。
3.损失函数报错的问题
multi-target not supported at /opt/conda/conda-bld/pytorch_1556653114079/wor
原因是你loss_func的标签label的维度不对,需要的是tensor的行向量
yourlabel.squeeze(1)
注意一定要是1,0就变成列向量了。
plus:差不多新手错误全是在数据结构上面,因为神经网络的架构只要一层一层算好(n+2p-kernel_size / s) + 1是绝对不会出错的,再难再大的网络画张图写好参数也不可能错
但是对于没有用过张量的直接从numpy转来的新手可能会因为一些方法的不同在数据结构上屡屡出错,所以从载入数据开始就要清楚每一次操作对于数据本身的shape或者size有什么影响。
ubuntu之路——day18 用pytorch完成CNN的更多相关文章
- ubuntu之路——day17.3 简单的CNN和CNN的常用结构池化层
来看上图的简单CNN: 从39x39x3的原始图像 不填充且步长为1的情况下经过3x3的10个filter卷积后 得到了 37x37x10的数据 不填充且步长为2的情况下经过5x5的20个filter ...
- Python之路,Day18 - 开发一个WEB聊天来撩妹吧
Python之路,Day18 - 开发一个WEB聊天来撩妹吧 本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个 ...
- MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...
- (原)ubuntu上编译PANet/Detectron.pytorch时-std=c99的错误
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/10494787.html 在ubuntu上编译PANet/Detectron.pytorch时,总提示 ...
- Pytorch和CNN图像分类
Pytorch和CNN图像分类 PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序.它主要由Facebookd的人工智能小组开发,不仅能够 实现强大的GPU加速 ...
- ubuntu之路——day19.2 开源框架与迁移、CNN中的数据扩充
开源框架与迁移 上面介绍了一些已经取得很好成绩的CNN框架,我们可以直接从GitHub上下载这些神经网络的结构和已经在ImageNet等数据集上训练好的权重超参数. 在应用于我们自己的数据时. 1.如 ...
- ubuntu之路——day19.1 深度CNN的探究
1.经典的CNN LeNet-5 1998的CNN鼻祖 以前用的sigmoid和tanh 下图给的是relu和softmax AlexNet ImageNet2012的冠军 VGG-16 ImageN ...
- ubuntu之路——day3(本来打算做pytorch的练习 但是想到前段时间的数据预处理的可视化分析 就先总结一下)
首先依托于一个场景来进行可视化分析 直接选了天池大数据竞赛的新人赛的一个活跃题目 用的方式也是最常用的数据预处理方式 [新人赛]快来一起挖掘幸福感!https://tianchi.aliyun.com ...
- 基于pytorch的CNN、LSTM神经网络模型调参小结
(Demo) 这是最近两个月来的一个小总结,实现的demo已经上传github,里面包含了CNN.LSTM.BiLSTM.GRU以及CNN与LSTM.BiLSTM的结合还有多层多通道CNN.LSTM. ...
随机推荐
- RocketMQ原理及源码解析
RocketMQ原理深入: 一.定义: RocketMQ是一款分布式.队列模型的消息中间件,有以下部分组成: 1.NameServer: 一个几乎无状态的节点,可集群部署,节点之间无任何信息同步 2. ...
- 【转】Webpack 快速上手(下)
由于文章篇幅较长,为了更好的阅读体验,本文分为上.中.下三篇: 上篇介绍了什么是 webpack,为什么需要 webpack,webpack 的文件输入和输出 中篇介绍了 webpack 在输入和输出 ...
- android中的webview白屏问题
最近在使用WebView的时候,发现了一个小问题,很多初学者应该会注意不到! WebView的layerType属性有三个值. 1.none,默认值, 2.software,软件加速, 3.hard ...
- ArrayList的subList方法带来的坑
最近在项目中遇到了一个问题,由一个对象序列化的结构,在反序列化时一直提示失败,真的百思不得其解啊.在对问题排查了好久之后,才发现是这个序列化的对象中的list调用了ArrayList的sublist方 ...
- webdriver 属于selenium 体系中设计出来操作浏览器的一套API
1.元素的定位 1.id属性定位 实例: find_element_by_id("kw") 2.name属性定位,同id一样是属性值 实例: find_element_ ...
- AR自动开票主程序导入发票的时候,出现错误提示''不能获取汇款地址''
问题:AR自动开票主程序,出现错误不能获取汇款地址 解决:AR>设置-打印-汇入地址,汇入地址要增加此客户地点对应的国家:
- Apache Hive
1.Hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 本质是将SQL转换为MapReduce程序. 主要用途:操作接口采用 ...
- git使用.gitignore文件忽略相关文件上传
在使用git时,有些文件是不需要上传到仓库中的,比如idea/eclipse相关的文件,编译后的文件(target目录)等. 可以使用.gitignore文件进行配置.在git本地仓库创建.gitig ...
- PHP在无限分类时注意的一些问题(不保证代码完全正确哦)
转自:PHP在无限分类时注意的一些问题(http://lxiaoke.cn) (注意:代码使用的是原生PHP,旨在提供解决思路)1 无限分类的查找(获取所有节点) 代码: /** * 无限分类查询,默 ...
- VS2015配置Qt5
目录 需要准备的东西 VS2015 Qt5 VS2015 Qt插件 rc.exe无法启动 基于CMake的Qt工程 reference 需要准备的东西 Visual Studio 2015 Qt5 V ...