前言
关于pytorch的使用心得,当然对于大能来说,都是基础的不能再基础的东西,修行之路漫漫呀!
1.网络训练函数也可以建立为1个类
- 以前我觉得训练模型的话,写一个训练函数就行了,后来看到别人把训练函数写成一个类。
- 为什么要写成一个类?
- 答:因为可以封装其他操作,使用比较方便,调用也比较方便
2.Aloss+Bloss=Closs,反向传播时,只需要传Closs
- 目前接触的大部分为单损失函数,所以当有两个函数时,我在纠结怎么写反向传播呢?是分别传递吗?
- 两个相加再反向传播与分别反向传播一样吗?这个目前还不是很肯定。
3.对运行在GPU上的张量修改形状,即reshape,不需要转换到cpu上操作。
- 对于np.round()此等运算,就需要先将张量转换到cpu上。
4.数据类型uint8
- 浮点型转换为整型的时候,数据类型采用了uint8,没想到数值发生了变化
- uint8只能表示0-255,竟然忽略了这个
5.pytorch 与torch 不是一回事
6.cudnn
- Runtime 和 Developer 版本的区别
7.卷积层定义了,但是没用到,最终权重依然会有对应的参数
8.安装包,要看清环境要求,github一般有对应版本的分支
9.导入.cpp类型的模块,需要编译
编译指令为:python 文件名 install --user
10.同样的条件,每次训练结果可能不一样
11.os.path.abspath输出的是当前工作目录路径,而不是文件所在路径!
-
后续发现什么再继续补充吧!