Test,Evaluate_gpu 修改,自动跑完你要的epoch
Test
当训练完的时候,会保存很多代的训练参数,后边做测试会把参数加载进行提取特征操作。加了一个循环,这样不用一个一个自己动手操作了,只需要把你想要的代数填进去就OK 了,
if __name__ == '__main__':####################################################################### Load Collected data Trained modelprint('-------test-----------')#model_structure = My_model(751)model_structure = resnet50_rga()#model_structure = nn.DataParallel(model_structure)#######list = [194,192,190,189,179,169,159,149,139,129]# 根据列表的代数参数,生成对应参数的特征。方便做测试。for epoch_i in list:model = load_network(model_structure,epoch_i)#model.load_state_dict({k.replace('module.', ''): v for k, v in torch.load(save_path).items()})# Change to test modemodel = model.eval()if use_gpu:model = model.cuda()# Extract featurecudnn.benchmark=Truegallery_feature = extract_feature(model, dataloaders['gallery'])query_feature = extract_feature(model, dataloaders['query'])# Save to Matlab for checkresult = {'gallery_f': gallery_feature.numpy(), 'gallery_label': gallery_label, 'gallery_cam': gallery_cam,'query_f': query_feature.numpy(), 'query_label': query_label, 'query_cam': query_cam}#scipy.io.savemat('pytorch_result_my_net7_duke2.mat', result)#scipy.io.savemat('pytorch_result_my_net7_duke.mat', result)scipy.io.savemat('pytorch_result_%s_%s.mat'%(name,epoch_i), result)#opt.which_epochprint('第%s代的参数对应的特征已经生成,注意查收^-^^_^^-^^_^'%epoch_i)print('Finished test for all epoch in list.......')
evaluate——GPU
测试完了之后就生成了 对应epoch参数的gallery和query特征。需要分别做一个评估,看看效果。
改进:也是加了一个循环,只需要把test里list列表复制过来即可,既可以连续做出评估并且保存。
操作说明:1.list列表复制粘贴过来。 2.name记得和test一样。
if __name__ == '__main__':list = [198,196,194,192,190,189,179,169,159,149,139,129]for epoch_i in list:mat_name = 'pytorch_result_My_mode_%s.mat'%epoch_iresult = scipy.io.loadmat(mat_name)##################################query_feature = torch.FloatTensor(result['query_f'])query_cam = result['query_cam'][0]query_label = result['query_label'][0]gallery_feature = torch.FloatTensor(result['gallery_f'])gallery_cam = result['gallery_cam'][0]gallery_label = result['gallery_label'][0]multi = os.path.isfile('multi_query.mat')if multi:m_result = scipy.io.loadmat('multi_query.mat')mquery_feature = torch.FloatTensor(m_result['mquery_f'])mquery_cam = m_result['mquery_cam'][0]mquery_label = m_result['mquery_label'][0]mquery_feature = mquery_feature.cuda()query_feature = query_feature.cuda()gallery_feature = gallery_feature.cuda()print(query_feature.shape)CMC = torch.IntTensor(len(gallery_label)).zero_()ap = 0.0#print(query_label)for i in range(len(query_label)):ap_tmp, CMC_tmp = evaluate(query_feature[i],query_label[i],query_cam[i],gallery_feature,gallery_label,gallery_cam)if CMC_tmp[0]==-1:continueCMC = CMC + CMC_tmpap += ap_tmp#print(i, CMC_tmp[0])CMC = CMC.float()CMC = CMC/len(query_label) #average CMCprint('Rank@1:%f Rank@5:%f Rank@10:%f mAP:%f'%(CMC[0],CMC[4],CMC[9],ap/len(query_label)))name = 'My_mode'# 在日志文件中记录精度#with open('./model/%s/%s.txt' %(name,name+'_`223'),'a') as acc_file:with open('./model/%s/%s.txt' %(name,name+'_resnet+cross'),'a') as acc_file:acc_file.write('%s, Rank@1: %f, Rank@5: %f, Rank@10: %f,\nmAP:%f\n' % (mat_name, CMC[0], CMC[4], CMC[9], ap/len(query_label)))print('Finished evaluate for %s epoch '%epoch_i)print('Finished evaluate for all epoch in the list....')'''
Test,Evaluate_gpu 修改,自动跑完你要的epoch相关推荐
- 10分钟内把永远跑不完的存储过程变为2秒跑完
临近年底,事情特别多,用户都把平时的问题积累到年底解决,导致了本人没到年底都是焦头烂额.前几天,一个用户现场着急打电话找到,说一个过程跑了好久也不跑不完...我问:手工执行呢?他说:手工执行也不出结果 ...
- 【云云怪】第7个项目:自动跑鹰眼
[项目预览] [创作背景] 这是我的每日工作的一项,登录YK网站后台,把前一天的所有职业棋谱都用"鹰眼"(一个围棋AI)跑一遍,然后发布.头一天比赛不多的时候,这工作挺简单的,几分 ...
- php手机发卡,PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码...
[温馨提示]源码包解压密码:www.youhutong.com 资源描述 PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码 安装教程: 环境p ...
- php 判断是不是前一天,PHP开发中,定时执行如何判断之前的脚本是否跑完?
本篇讲讲在PHP开发中,定时执行如何判断之前的脚本是否跑完? 在PHP开发中,有时我们有这样一种需求 一个脚本 定时每两分钟执行一次 可是在下一个脚本循环执行时 上面一个脚本还没跑完 我们就应该取消当 ...
- 任务管理 linux指令qsub,Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid
Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid perl program_1.pl input_1.file output_1.file perl program_2.pl ...
- 程序员30岁后,9分钟跑完1600米
如果跑完1600米所用时间在9分钟(女性)或8分钟(男性)内,说明你的身体年龄小于35岁.如果超过12分钟(女性)或10分钟(男性),未来30年死于心脏病的几率是30%.
- java数据跑不出来,6000条数据,java下跑了20多分钟了还没跑完,求教怎么改进
当前位置:我的异常网» Java Web开发 » 6000条数据,java下跑了20多分钟了还没跑完,求教怎 6000条数据,java下跑了20多分钟了还没跑完,求教怎么改进 www.myexcept ...
- 最重要的是跑完,而不是刚开始跑得有多快
到目前为止,你总共在自己本来有兴趣学的事情上对自己说过多少次"唉,我看我没有天分,还是算了吧"的话呢? 这句话通常被用来当作宣告某一段努力完全失败的休止符,也常被用来把某一扇门关上 ...
- IDEA中修改自动生成的Servlet模板,提高编码效率
IDEA中修改自动生成的Servlet模板,提高编码效率 一.修改idea中生成的servlet模板原因 自动生成的servlet模块代码,不够智能,还需要手动进行修改 二.修改Servlet模板 三 ...
最新文章
- Verilog中inout端口的使用方法
- VF01-billing拆分逻辑详解
- 如何成为linux内核维护人员,Linux内核维护人员Greg Kroah-Hartman拒绝明尼苏达大学的道歉...
- 【MyEclips】“Could not create the view: An unexpected exception was thrown”错误解决
- Python中高级变量类型(列表,元组,字典,字符串,公共方法...)
- Android 小项目之--数据存储【Files】(附源码)
- c语言创建一个根结点,创建一个由10个节点组成的二叉树结构,并按前根、中根、后根对该二叉树进行遍历,并输出遍历结果(c语言)...
- OpenShift 4 - DevSecOps Workshop (3) - 从PipelineResource、Task到一个简单的Pipeline
- cocos2d-x帧动画实现(续)
- Linux使用jstat命令查看jvm的GC情况(转)
- Android进阶学习-使用Canvas自定义ArcView(4)
- 通过CN3口直接控制台达伺服电机A2-M(一)
- 免费版pycharm创建vue项目
- cmor在matlab中,MATLAB小波变换指令及其功能介绍(超级有用)(最新整理)
- EDI X12 标准报文清单
- java.io.NotSerializableException错误解决方法
- 2020年小学几年级有计算机课,2019-2020年最新小学信息技术三年级上册第1课初识计算机备课教学参考.doc...
- 怎样借助Python爬虫给宝宝起个好名字--python 学习
- 你好,世界:第一个Java程序(《Java与Python学习通法》)
- 重庆人姓名“大数据”发布