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相关推荐

  1. 10分钟内把永远跑不完的存储过程变为2秒跑完

    临近年底,事情特别多,用户都把平时的问题积累到年底解决,导致了本人没到年底都是焦头烂额.前几天,一个用户现场着急打电话找到,说一个过程跑了好久也不跑不完...我问:手工执行呢?他说:手工执行也不出结果 ...

  2. 【云云怪】第7个项目:自动跑鹰眼

    [项目预览] [创作背景] 这是我的每日工作的一项,登录YK网站后台,把前一天的所有职业棋谱都用"鹰眼"(一个围棋AI)跑一遍,然后发布.头一天比赛不多的时候,这工作挺简单的,几分 ...

  3. php手机发卡,PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码...

    [温馨提示]源码包解压密码:www.youhutong.com 资源描述 PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码 安装教程: 环境p ...

  4. php 判断是不是前一天,PHP开发中,定时执行如何判断之前的脚本是否跑完?

    本篇讲讲在PHP开发中,定时执行如何判断之前的脚本是否跑完? 在PHP开发中,有时我们有这样一种需求 一个脚本 定时每两分钟执行一次 可是在下一个脚本循环执行时 上面一个脚本还没跑完 我们就应该取消当 ...

  5. 任务管理 linux指令qsub,Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid

    Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid perl program_1.pl input_1.file output_1.file perl program_2.pl ...

  6. 程序员30岁后,9分钟跑完1600米

    如果跑完1600米所用时间在9分钟(女性)或8分钟(男性)内,说明你的身体年龄小于35岁.如果超过12分钟(女性)或10分钟(男性),未来30年死于心脏病的几率是30%.

  7. java数据跑不出来,6000条数据,java下跑了20多分钟了还没跑完,求教怎么改进

    当前位置:我的异常网» Java Web开发 » 6000条数据,java下跑了20多分钟了还没跑完,求教怎 6000条数据,java下跑了20多分钟了还没跑完,求教怎么改进 www.myexcept ...

  8. 最重要的是跑完,而不是刚开始跑得有多快

    到目前为止,你总共在自己本来有兴趣学的事情上对自己说过多少次"唉,我看我没有天分,还是算了吧"的话呢? 这句话通常被用来当作宣告某一段努力完全失败的休止符,也常被用来把某一扇门关上 ...

  9. IDEA中修改自动生成的Servlet模板,提高编码效率

    IDEA中修改自动生成的Servlet模板,提高编码效率 一.修改idea中生成的servlet模板原因 自动生成的servlet模块代码,不够智能,还需要手动进行修改 二.修改Servlet模板 三 ...

最新文章

  1. Verilog中inout端口的使用方法
  2. VF01-billing拆分逻辑详解
  3. 如何成为linux内核维护人员,Linux内核维护人员Greg Kroah-Hartman拒绝明尼苏达大学的道歉...
  4. 【MyEclips】“Could not create the view: An unexpected exception was thrown”错误解决
  5. Python中高级变量类型(列表,元组,字典,字符串,公共方法...)
  6. Android 小项目之--数据存储【Files】(附源码)
  7. c语言创建一个根结点,创建一个由10个节点组成的二叉树结构,并按前根、中根、后根对该二叉树进行遍历,并输出遍历结果(c语言)...
  8. OpenShift 4 - DevSecOps Workshop (3) - 从PipelineResource、Task到一个简单的Pipeline
  9. cocos2d-x帧动画实现(续)
  10. Linux使用jstat命令查看jvm的GC情况(转)
  11. Android进阶学习-使用Canvas自定义ArcView(4)
  12. 通过CN3口直接控制台达伺服电机A2-M(一)
  13. 免费版pycharm创建vue项目
  14. cmor在matlab中,MATLAB小波变换指令及其功能介绍(超级有用)(最新整理)
  15. EDI X12 标准报文清单
  16. java.io.NotSerializableException错误解决方法
  17. 2020年小学几年级有计算机课,2019-2020年最新小学信息技术三年级上册第1课初识计算机备课教学参考.doc...
  18. 怎样借助Python爬虫给宝宝起个好名字--python 学习
  19. 你好,世界:第一个Java程序(《Java与Python学习通法》)
  20. 重庆人姓名“大数据”发布

热门文章

  1. 从运维角度聊下:如何维护一套 DevOps 系统
  2. Net2 A Graph Attention Network Method
  3. 数据库中索引的填充因子
  4. 码农:用git怕丢代码,每次都备份,同事:不学习的人真可怕!
  5. 基于c语言的象棋游戏
  6. 嵌入式软件工程师和嵌入式硬件工程师有什么区别
  7. 跑步听歌用哪种耳机更合适、适合跑步专业的耳机推荐
  8. OpenStack Tracker
  9. Edge浏览器怎么降级到旧版本?
  10. 【C语言】switch语句的理解