簡體   English   中英

將預先培養的咖啡模型加載到千層面?

[英]Load a pretrained caffe model to lasagne?

我正在嘗試重現長期復發卷積網絡的論文。

我有一個預訓練的caffe模型,我想在theano使用。 我有.caffemodel這個文件,和prototxt 我已經使用千層面示例將咖啡重量加載到caffe模型中。 這是我使用代碼 ,但數據未加載到千層面模型。 我使用lasagne.layers.get_all_param_values(net)命令進行了檢查,該命令會引發此錯誤。

Traceback (most recent call last):
  File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 1802, in run
    launch(file, globals, locals)  # execute the script
  File "/media/anilil/Data/charm/mv_clean/Vgg_las.py", line 218, in <module>
    x=lasagne.layers.get_all_param_values(net)
  File "/usr/local/lib/python2.7/dist-packages/lasagne/layers/helper.py", line 439, in get_all_param_values
    params = get_all_params(layer, **tags)
  File "/usr/local/lib/python2.7/dist-packages/lasagne/layers/helper.py", line 353, in get_all_params
    return utils.unique(params)
  File "/usr/local/lib/python2.7/dist-packages/lasagne/utils.py", line 157, in unique
    for el in l:
  File "/usr/local/lib/python2.7/dist-packages/lasagne/layers/helper.py", line 352, in <genexpr>
    params = chain.from_iterable(l.get_params(**tags) for l in layers)
AttributeError: 'str' object has no attribute 'get_params'

試用/測試代碼:-

# -*- coding: utf-8 -*-
import os
import sys
import lasagne
from lasagne.layers import InputLayer
from lasagne.layers import DenseLayer
from lasagne.layers import NonlinearityLayer
from lasagne.nonlinearities import rectify
from lasagne.layers import DropoutLayer
from lasagne.layers import Pool2DLayer as PoolLayer
from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
from lasagne.nonlinearities import softmax
import theano as T
from lasagne.layers import LocalResponseNormalization2DLayer as LRN
sys.path.append('/home/anilil/projects/lstm/lisa-caffe-public/python/')
import caffe
from lasagne.utils import floatX
import numpy as np

def build_model():
    net = {}
    # Input layer
    net['input'] = InputLayer((None, 3, 227, 227))
    # First Conv Layer
    net['conv1'] = ConvLayer(net['input'], num_filters=96,filter_size=7, pad=0, flip_filters=False,stride=2,nonlinearity=rectify)
    net['pool1'] = PoolLayer(net['conv1'], pool_size=3,stride=2,mode='max')
    net['norm1'] = LRN(net['pool1'],alpha=0.0001,beta=0.75,n=5)
    # 2nd Conv Layer
    net['conv2'] = ConvLayer(net['norm1'], num_filters=384,filter_size=5, pad=0, flip_filters=False,stride=2,nonlinearity=rectify)
    net['pool2'] = PoolLayer(net['conv2'], pool_size=3,stride=2,mode='max')
    net['norm2'] = LRN(net['pool2'],alpha=0.0001,beta=0.75,n=5)
    # 3rd Conv Layer
    net['conv3'] = ConvLayer(net['norm2'], num_filters=512,filter_size=3, pad=1, flip_filters=False,nonlinearity=rectify)
    net['conv4'] = ConvLayer(net['conv3'], num_filters=512,filter_size=3, pad=1, flip_filters=False,nonlinearity=rectify)
    net['conv5'] = ConvLayer(net['conv4'], num_filters=384,filter_size=3, pad=1, flip_filters=False,nonlinearity=rectify)
    net['pool5'] = PoolLayer(net['conv5'], pool_size=3,stride=2,mode='max')
    net['fc6'] = DenseLayer(net['pool5'], num_units=4096,nonlinearity=rectify)
    net['fc6_dropout'] = DropoutLayer(net['fc6'], p=0.5)
    net['fc7'] = DenseLayer(net['fc6_dropout'], num_units=4096)
    net['fc7_dropout'] = DropoutLayer(net['fc7'], p=0.5)
    net['fc8-ucf'] = DenseLayer(net['fc7_dropout'], num_units=101, nonlinearity=None)
    net['prob'] = NonlinearityLayer(net['fc8-ucf'], softmax)

    return net

if __name__=="__main__":
    net = build_model()
    #net= load_caffe_weights(net,'/home/anilil/projects/lstm/lisa-caffe-public/examples/LRCN_activity_recognition/deploy_singleFrame.prototxt','/home/anilil/projects/lstm/lisa-caffe-public/examples/LRCN_activity_recognition/singleframe_flow/snaps/snapshots_singleFrame_flow_v2_iter_50000.caffemodel')
    caffe.set_device(0)
    caffe.set_mode_gpu()
    net_caffe = caffe.Net('/home/anilil/projects/lstm/lisa-caffe-public/examples/LRCN_activity_recognition/deploy_singleFrame.prototxt', '/home/anilil/projects/lstm/lisa-caffe-public/examples/LRCN_activity_recognition/singleframe_flow/snaps/snapshots_singleFrame_flow_v2_iter_50000.caffemodel', caffe.TEST)
    layers_caffe = dict(zip(list(net_caffe._layer_names), net_caffe.layers))

    for name, layer in net.items():
        try:
            layer.W.set_value(layers_caffe[name].blobs[0].data,borrow=True)
            layer.b.set_value(layers_caffe[name].blobs[1].data,borrow=True)
        except AttributeError:
            continue

    print ("Loaded the files without issues !!!!!!!!!!")
    x=lasagne.layers.get_all_param_values(net)
    print ("Saved Weights to the file without issues !!!!!!!!!!")

嘗試:

X = lasagne.layers.get_all_param_values(凈[ '概率'])

或以這種方式制作您的網:

def build_model():
    net = {}
    # Input layer
    net = InputLayer((None, 3, 227, 227))
    # First Conv Layer
    net = ConvLayer(net, num_filters=96,filter_size=7, pad=0,     flip_filters=False,stride=2,nonlinearity=rectify)
    net = PoolLayer(net, pool_size=3,stride=2,mode='max')
    ....
    net= NonlinearityLayer(net, softmax)
    return net

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM