深度学习:caffe添加python层以及多GPU训练https://blog.youkuaiyun.com/lilai619/article/details/88235691

博客围绕深度学习中Caffe添加Python层及多GPU训练展开。介绍了trainval.protxt、solver.protxt和my_image_data.py的注意点,如trainval.protxt要指定type、module等;my_image_data.py需正确指定Caffe路径且与protoxt文件同目录。还提及单GPU和多GPU调用的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度学习:caffe添加python层以及多GPU训练

      版权声明:博主水平有限,欢迎大家给予指导,共同进步!          https://blog.youkuaiyun.com/lilai619/article/details/88235691        </div>
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
                          <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
      <div class="htmledit_views" id="content_views">
        <p>以前用过,又忘记了,今天再备忘一下。以数据层为例,说明如何添加自己的python层。</p>

1:trainval.protxt


 
  1. name: " mytest"
  2. layer {
  3. name: "data"
  4. type: "Python"
  5. top: "data"
  6. top: "label"
  7. python_param {
  8. module: 'my_image_data'
  9. layer: 'MyImageDataLayer'
  10. param_str: "{'feat_stride': 16, 'ratios': [0.4, 0.667, 1, 1.5, 2.5], 'scales': [2, 3, 6, 9, 16]}"
  11. }
  12. }

注意点:

1:type:           指定为Python

2:module:     指定为自己python文件名【我的是my_image_data.py,所以这里指定为my_image_data】

3:layer:         指定为自己写的层的类名【具体的可以参看my_image_data.py文件】

4:param_str:用于指定参数或者配置

 

2:solver.prototxt


 
  1. net: "trainval.prototxt"
  2. test_iter: 100
  3. test_interval: 1000
  4. base_lr: 0.000038
  5. momentum: 0.9
  6. weight_decay: 0.004
  7. lr_policy: "step"
  8. gamma: 0.1
  9. stepsize: 30000
  10. display: 500
  11. max_iter: 200000
  12. snapshot: 1000
  13. snapshot_prefix: "model/mytest"
  14. solver_mode: GPU

3:my_image_data.py


 
  1. #!/usr/bin/env python
  2. """
  3. """
  4. import os
  5. import cv2
  6. import glob
  7. import time
  8. import yaml
  9. import numpy as np
  10. import sys
  11. sys.path.insert( 0, '/home_enet1/Caffe-Frame/video-caffe/python')
  12. import caffe
  13. class MyImageDataLayer(caffe.Layer):
  14. def setup(self,bottom,top):
  15. layer_params = yaml.load(self.param_str)
  16. self.scales = layer_params.get( 'scales', ( 8, 16, 32))
  17. self.ratios = layer_params.get( 'ratios', (( 0.5, 1, 2)))
  18. self.feat_stride = layer_params[ 'feat_stride']
  19. top[ 0].reshape( 1, 1, 100, 100)
  20. # bbox_targets
  21. # top[1].reshape(1, A * 4, height, width)
  22. top[ 1].reshape( 1, 1, 100, 100)
  23. def reshape(self,bottom,top):
  24. pass
  25. def forward(self,bottom,top):
  26. print "!!!!!!!!!!!!!!!!!!!!!!"
  27. print self.scales, self.ratios,self.feat_stride
  28. print "!!!!!!!!!!!!!!!!!!!!!!"
  29. def backward(self,top,propagate_dowm,bottom):
  30. pass

最重要的两点:

1:一定要正确指定自己的caffe路径【否则会提示No moudle named ***】

2:py文件和protoxt文件放在同一个目录【具体位置无所谓,在同一个目录就行】

import sys
sys.path.insert(0,'/home_enet1/Caffe-Frame/video-caffe/python')
import caffe

4:单GPU调用

/home_enet1/Caffe-Frame/video-caffe/build/tools/caffe train --solver=solver.prototxt  --gpu 0 2>&1 | tee mytest.LOG
 

注意点:

这个脚本只能单GPU训练

5:多GPU调用

如果想多GPU训练,就用caffe里面自带的python/train.py文件进行调用。

python train.py --solver=solver.prototxt --snapshot= --gpu 0 1 2>&1 | tee mytest.LOG
 

 
  1. watch -n 1 nvidia-smi
  2. 观察显存和GPU调用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值