代码笔记:
1.超参数定义和设置代码在option和config等关键字命名,超参数是指定数据存放的路径,训练过程中的batch_size,网络模型的参数等
2.数据集的构建往往命名为dataset.py,重点关注dataloader部分,它决定了提供给每次训练迭代中什么样的数据,即__getitem__的返回值是什么
3.神经网络模型的结构定义代码在以model为命名的文件夹下,前期关注forward函数的定义
4.模型训练的代码命名为train.py,基本步骤:数据集的实例化(dataset),模型的实例化(model),优化器的创建(optimizer),迭代训练(training loop)。找到迭代训练的for循环后,弄清楚这几步:由dataloader给出的数据→送入模型的前向传播→计算loss→反向传播计算梯度(loss.backward)→优化网络参数(optimizer.step)→优化器清空梯度(optimizer.zero_grad)
3.31
今天学会给每个项目设置一个独立的conda,基本安装包的办法, pip install numpy,pip install pandas.
import torch成功,步骤如下
1.安装pip(pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu116)2.如图
1.PMT:Learning Progressive Modality-Shared Transformers for Effective Visible-Infrared Person Re-identification.
2.Pose:On exploring pose estimation as an auxiliary learning task for Visible-Infrared Person Re-identification.
3.USL:Unsupervised Visible-Infrared Person Re-Identification via Progressive Graph Matching and Alternate Learning
选择了第2篇进行复现
4.1
安装apex库成功
首先下载安装包(https://github.com/NVIDIA/apex.git)解压,然后命令行窗口安装
同级目录from文件 import 类报错,报错情况:
原因:Pycharm不会将当前文件目录自动加入Sourse_Path
解决方法:选中.py文件所在的文件夹(如图是classification文件夹),右键 Make Directory as → Sources Root,将当前工作的文件夹加入Source_Path
4.2
No module named 'pytest’错误原因:.py文件名的开头出现了test_,会被pycharm默认为我们要用pytest的方式运行解决方法:
1.修改test_的名字
2.顺着它,把pytest安装了:pip install pytest
3.改掉pycharm自动以pytest运行的方式,见别人的博客:https://blog.youkuaiyun.com/cvnlixiao/article/details/87351491,
我先选择的1,将test改为PoseTestMl,失败
然后pip install pytest,错误解决,并改回test名字
说我test模块的名字不对,啊啊崩溃
解决不了啊啊,换PMT项目了。。加油!
新建conda环境和安装包,以后努力为每个项目配置单独的环境。
遇到了和上个项目一样的问题,
在pycharm中的Terminal中运行:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt 问题解决。
4.26
1.超参数定义和设置代码在option和config等关键字命名,超参数是指定数据存放的路径,训练过程中的batch_size,网络模型的参数等
2.数据集的构建往往命名为dataset.py,重点关注dataloader部分,它决定了提供给每次训练迭代中什么样的数据,即__getitem__的返回值是什么
3.神经网络模型的结构定义代码在以model为命名的文件夹下,前期关注forward函数的定义
4.模型训练的代码命名为train.py,基本步骤:数据集的实例化(dataset),模型的实例化(model),优化器的创建(optimizer),迭代训练(training loop)。找到迭代训练的for循环后,弄清楚这几步:由dataloader给出的数据→送入模型的前向传播→计算loss→反向传播计算梯度(loss.backward)→优化网络参数(optimizer.step)→优化器清空梯度(optimizer.zero_grad)
公式:根据卷积求stride,padding
4.27
下载SAAI预训练模型SYSU_p7_dp_l2_seed_0.pth
并且运行.pth文件加载模型
结果如下,只保存了参数没有保存网络结构。
解决方法:换个方法加载模型,像加载自己训练好的网络那样加载预训练模型。
主要是把pretrain设成false,然后直接把路径指定到模型所在处,用load_state_dict程序进行加载。
报错
正在看.pth模型
https://blog.youkuaiyun.com/u014264373/article/details/85332181
还是没有找到如何打印.pth的网络模型,.pth文件只在train.sh中出现了
预训练模型讲解:https://www.bilibili.com/video/BV1Bk4y1F72N/?spm_id_from=333.337.search-card.all.click&vd_source=635bca151f3b35eb7c6aad70eb086349
后来经过老袁讲解,把.pth放在与test同一目录下,然后test中的checkpoint的default改为.pth的地址。
4.30
报错原因:当你遇到 ValueError: invalid literal for int() with base 10 错误时,这意味着你的代码尝试使用 int() 函数将一个字符串或其他非整型数据转换为整数,但是这个转换操作失败了,因为给定的字符串或数据不能被解释为一个有效的十进制整数。
我将错误定位到最后一行报错,发现地址获取有问题,改为
的格式,问题解决。
列表超出索引范围,原因:1.可能是下标超出范围 2.可能是list是空的,没有一个元素
5.4
对于之前的问题,列表超出索引值,
终于解决了,将路径分割的split(‘/’)改为split(‘//’),此时能够划分列表,虽然是很小的问题,但难了我好几天,开心。
现在是再在服务器上跑跑吧。
5.6
在自己win11上用命令行跑一下
Ubuntu环境上:
新建SAAI的conda环境,接下来安装包。
参考Unbuntu下载命令
ubuntu安装apex路程
首先下载了git,下载git成功之后,进行如下命令:
然后,
最后验证成功
主要参考了文章
5.8
运行一下
遇见错误:
呜呜呜test测试结果出来了
5.31
train遇到错误
对应位置:
例如:
save获得不期待的值sava_interval
7.1
复现LLCM实验
创建conda环境
接下来开始安装包