zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    悲观锁和乐观锁
    ClickOnce安装提示文件计算出的哈希值与清单中的指定值不同的解决办法
    DataView的toTable和Table
    DataTable中抽取Distinct数据
    CSTE学习网站
    我的SiteMap
    Typesetting Engine_Gecko
    VSTS使用Web测试
    创建Web 服务测试
    [ZZ]Browser Series_网页浏览器比较
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/14883951.html
Copyright © 2011-2022 走看看