栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在python中以编程方式为caffe生成deploy.txt

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在python中以编程方式为caffe生成deploy.txt

很简单:

from caffe import layers as L, params as Pdef custom_net(lmdb, batch_size):    # define your own net!    n = caffe.NetSpec()    if lmdb is None: # "deploy" flavor        # assuming your data is of shape 3x224x224        n.data = L.Input(input_param={'shape':{'dim':[1,3,224,224]}})    else:        # keep this data layer for all networks        n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,   ntop=2, transform_param=dict(scale=1. / 255))    # the other layers common to all flavors: train/val/deploy...    n.conv1 = L.Convolution(n.data, kernel_size=6,  num_output=48, weight_filler=dict(type='xavier'))    n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)    n.conv2 = L.Convolution(n.pool1, kernel_size=5,  num_output=48, weight_filler=dict(type='xavier'))    n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)    n.conv3 = L.Convolution(n.pool2, kernel_size=4,  num_output=48, weight_filler=dict(type='xavier'))    n.pool3 = L.Pooling(n.conv3, kernel_size=2, stride=2, pool=P.Pooling.MAX)    n.conv4 = L.Convolution(n.pool3, kernel_size=2,  num_output=48, weight_filler=dict(type='xavier'))    n.pool4 = L.Pooling(n.conv4, kernel_size=2, stride=2, pool=P.Pooling.MAX)    n.fc1 = L.InnerProduct(n.pool4, num_output=50, weight_filler=dict(type='xavier'))    # do you "drop" i deploy as well? up to you to decide...    n.drop1 = L.Dropout(n.fc1, dropout_param=dict(dropout_ratio=0.5))    n.score = L.InnerProduct(n.drop1, num_output=2,   weight_filler=dict(type='xavier'))    if lmdb is None:        n.prob = L.Softmax(n.score)    else:        # keep this loss layer for all networks apart from "Deploy"        n.loss = L.SoftmaxWithLoss(n.score, n.label)    return n.to_proto()

现在调用函数:

with open('net_deploy.prototxt', 'w') as f:    f.write(str(custom_net(None, None)))

正如你可以看到有两处修改到prototxt(条件上

lmdb
None
):
第一个,而不是
"Data"
一层,你必须声明
"Input"
层只声明
"data"
,不
"label"

第二个变化是输出层:您有一个预测层(而不是损失层)(例如,参见此答案)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456018.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号