• caffe项目实战代码


     

    生成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()
  • 相关阅读:
    【转】一个java处理JSON格式数据的通用类
    Oracle数据类型Clob读取
    【网摘】Ibatis调用存储过程
    jQuery实现页面模块拖拽与模块自定义效果.rar
    jspSmartUpload上传下载全攻略
    【转】JSON 入门指南
    【摘选自江苏移动网上营业厅】JS实现无间断向上滚动marquee
    Oracle用户解锁
    js 蒙版进度条(图片)
    java文件夹遍历
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/14883951.html
Copyright © 2020-2023  润新知