ubuntu下caffe的python接口配置和参数提取

本文分享了作者作为电子专业学生,在FPGA上实现卷积神经网络的过程中,如何利用Python和Caffe工具包导出训练好的模型权重和偏置项的具体步骤。文中详细介绍了从安装配置到提取并输出权重文件的全过程。

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

由于本人专业并非计算机,而是电子。因毕设需要在fpga上实现卷积神经网络,最近才开始接触机器学习。可能写的比较白痴,或者有些并不是最好的方法,但是是我自己亲测可用的方法。
计算机的基础只有一点C++,所以当我需要获得卷积神经网络的weights这些数据的时候,各种求助教程。
在网络上各种大神的教程的帮助下(主要参考以下两篇文章),以及自己不断摸索,终于成功地把weights,bias这些信息导出到txt了。
http://www.cnblogs.com/denny402/p/5686257.html
http://www.cnblogs.com/denny402/p/5088399.html
记录一下过程,以防自己忘了,也希望能为刚刚进入接触caffe的完全计算机菜鸟一个参考吧。
0. 安装caffe和训练caffemodel
我caffe是几个月前装的,大部分的过程都是参考http://caffe.berkeleyvision.org
包括我要训练的cnn模型也是教程上的lenet。这些就不详述了,不是本文的重点。
1. 安装pycaffe接口需要的库

sudo apt install python-pip
sudo apt-get install python-dev python-numpy
cd ~/caffe
sudo apt-get install gfortran
sudo pip install -r python/requirements.txt

看到 “Requirement already satisfied” 即安装完成
2. 修改配置

sudo vi ~/.bashrc

在最后面加上

export PYTHONPATH=/home/xxx/caffe/python:$PYTHONPATH

这一步我进行的不是很顺畅,vi用的不溜啊。感觉我加的貌似

是有问题的,不过后面还有补救办法
修改Makefile.config
主要是取消了一句注释

WITH_PYTHON_LAYER := 1

更新配置文件 (这步根据网上依样画葫芦的)

sudo ldconfig
  1. 编译
cd caffe
sudo make pycaffe

然后pycaffe接口就配好了
4. 进入python
在terminal输入python

import caffe

我这个时候就有报错,No module named caffe
********以下就是为了解决No module named caffe这个问题*********
还是在python的环境中

import sys
sys.path.append("/home/***/caffe/python")
sys.path.append("/home/***/caffe/python/caffe")
import os
import numpy as np
import scipy.io as sio

之后import caffe就没毛病啦 (不过这个貌似不能根治这个问题,需要每次使用前都输一次)
********************我是分割线**********************
5. 参数提取

deploy='/home/***/caffe/examples/mnist/lenet.prototxt' 
caffe_model='/home/***/caffe/examples/mnist/lenet_iter_10000.caffemodel' #训练好的caffemodel
net=caffe.Net(deploy,caffe_model,caffe.TEST) #加载model和network

然后就是提取参数的过程了,举conv1做例子

w1=net.params['conv1'][0].data
b1=net.params['conv1'][1].data

然后caffemodel的weights已经在w1中了,bias就在b1中了
6. 输出到txt
由于本人对于python不是很熟悉,于是乎,怎么把w1放到txt中,并且没有中括号,只用“ ”间隔开,也费了一点小功夫
w1是一个20x1x5x5的数组,根据我的需要,我的方法是

w1.tofile('conv1_w.txt',sep=" ",format="%f")

然后就获得了想要的conv1的weights啦

之后可以用于matlab验证和在FPGA上计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值