首页 > 其他 > 详细

caffe项目实战代码

时间:2021-06-15 09:31:28      阅读:29      评论:0      收藏:0      [点我收藏+]
 

生成solver文件:

from caffe.proto import caffe_pb2

s = caffe_pb2.SolverParameter()
s.train_net = "train.prototxt"  # 定义网络名为trai.prototxt
s.test_net.append("test.prototxt")  # 定义测试网络

s.test_interval = 100
s.test_iter.append(10)
# 定义最大迭代次数
s.max_iter = 1000
s.base_lr = 0.1
# 定义学习率衰减率
s.weight_decay = 5e-4
# 义学习率更新方式
s.lr_policy = "step"
# 定义网络打印间隔
s.display = 10
# 定义模型和存储间隔
s.snapshop = 10.
# 定义模型存放路径
s.snapshop_prefix_prefix = "model"
s.type="SGD"
s.solver_mode=caffe_pb2.SolverParameter.GPU  #定义网络优化使用gpu



#生成solver文件s.prototxt
with open(net/s.prototxt,w) as f:
    f.write(str(s))

 

创建create_net.py 生成网络:

# 生成caffe网络
import caffe

def create_net():
    net=caffe.NetSpec()  #生成网络net,用于放layer层

    # 定义数据层, 定义成lmdb数据格式
    # 参数ntop=2,表示数据种类的格式有2个分别为data和label
    net.data,net.label = caffe.layers.Data(source="data.lmdb",
                                           backend=caffe.params.Data.LMDB,
                                           batch_size=32,
                                           ntop=2,
                                           transform_param=dict(crop_size=40,mirror=True)
                                           )

    # 定义卷积层 输入为data层,核数20,weight_filter卷积核初始化参数
    net.conv1=caffe.layers.Convolution(net.data,
                                       num_output=20,
                                       kernel_size=5,
                                       weight_filter={type:xavier},
                                       bias_filter={type:xavier}
                                       )

    # 定义激活层
    net.relu1=caffe.layers.ReLU(net.conv1,in_place=True)

    # 定义池化层
    net.pool1=caffe.layers.Pooling(net.relu1,pool=caffe.params.Pooling.MAX,
                                   kernel_size=3,stride=2)
    # 上述是定义了一层  如果有多层  将卷积层+relu+池化 重复几遍即可, 要修改核数 or 核大小 or padding

    # 定义全连接层 fc输出为1024
    net.fc3=caffe.layers.InnerProduct(net.pool1,num_output=1024,weight_filter=dict(type=xavier))

    #定义激活函数
    net.relu2=caffe.layers.ReLU(net.fc3,in_place=True)

    #定义dropout层
    net.drop = caffe.layers.Dropout(net.relu2,dropout_param=dict(dropout_ratio=0.5))

    # 定义输出层
    net.loss=caffe.layers.SoftmaxWithLoss(net.fc3,net.label)

    #将网络写入文件中,即生成prototxt文件
    with open(net/tt.prototxt,w) as f:
        f.write(str(net.to_proto))  # to_proto方法生成prototxt文件




if __name__ == __main__:
    create_net()

 

caffe项目实战代码

原文:https://www.cnblogs.com/dingyunfeng/p/14883951.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!