شروع کار با caffe - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

شروع کار با caffe

0 امتیاز
با سلام. من میخام تازه شروع کنم  با کفه و پایتون کار کنم و از شبکه vgg میخام استفاده کنم ولی اصلا نمیدونم از کجا باید شروع کنم یعنی کد شبکه vgg را باید با پایتون پیاده سازی کنم بعد با کفه تست و تریت انجام بدم؟ یا تعریف شبکه کلا از کفه آغاز میشه و اونوقت پایتون کجا استفاده میشه؟
سوال شده تیر 21, 1396  بوسیله ی زیبا (امتیاز 13)   3 4

1 پاسخ

+1 امتیاز

سلام.

تو پایتون 2 راه برای توسعه شبکه وجود دارد

1- استفاده از فایل .prototxt

2- استفاده از pycaffe

در روش اول همانطور که اطلاعات دارید تعاریف شبکه در فایل .prototxt پیاده سازی میشه و در این پست می تونید یک نمونه از آن را ببینید.

و اما روش دوم که نصب pycaffe هستش که این امکان را به شما میده که شبکه را در کد پایتون تعریف کنید.

به صورت زیر :

def iris_network(lmdb_path, batch_size):
    """
    Simple network for Iris classification.
    
    :param lmdb_path: path to LMDB to use (train or test LMDB)
    :type lmdb_path: string
    :param batch_size: batch size to use
    :type batch_size: int
    :return: the network definition as string to write to the prototxt file
    :rtype: string
    """
        
    net = caffe.NetSpec()
    net.data, net.labels = caffe.layers.Data(batch_size = batch_size, backend = caffe.params.Data.LMDB, 
                                             source = lmdb_path, ntop = 2)
    net.data_aug = caffe.layers.Python(net.data, 
                                       python_param = dict(module = 'tools.layers', layer = 'DataAugmentationRandomMultiplicativeNoiseLayer'))
    net.labels_aug = caffe.layers.Python(net.labels,
                                         python_param = dict(module = 'tools.layers', layer = 'DataAugmentationDuplicateLabelsLayer'))
    net.fc1 = caffe.layers.InnerProduct(net.data_aug, num_output = 12,
                                        bias_filler = dict(type = 'xavier', std = 0.1),
                                        weight_filler = dict(type = 'xavier', std = 0.1))
    net.sigmoid1 = caffe.layers.Sigmoid(net.fc1)
    net.fc2 = caffe.layers.InnerProduct(net.sigmoid1, num_output = 3,
                                        bias_filler = dict(type = 'xavier', std = 0.1),
                                        weight_filler = dict(type = 'xavier', std = 0.1))
    net.score = caffe.layers.Softmax(net.fc2)
    net.loss = caffe.layers.MultinomialLogisticLoss(net.score, net.labels_aug)
        
    return net.to_proto()

 

و اما مزیت استفاده از فایل .prototxt نسبت به pycaffe این هستش که اکثر شبکه ها در model zoo فایل .prototxt آن را در اختیار دارید که می تونید به راحتی عملیات آموزش یا finetuning را انجام بدید. و همچنین به راحتی می تونید شبکه مورد نظر را رسم کنید.

پاسخ داده شده تیر 22, 1396 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
...