caffe Layers相关的API

来源:互联网 发布:360云盘程序员 编辑:程序博客网 时间:2024/06/03 22:38
导入需要用到的模块,layer和params
import caffe
from caffe import layers as L
from caffe inport params as P
1. 数据层:

作为每一个模型的最底层,caffe可以读取不同格式的数据,包括lmdb,leveldb,HDF5,原始图片,还可以直接自己定义输入格式

(1). lmdb/leveldb 格式的数据层定义L.Data(sourec = path                  // 数据库的路径(必要参数)backend = P.Data.LMDB          // 指定数据库的格式(必要参数)batch_size = batch_size        // 深度学习都是按照批次来优化求解的,批大小。(必要参数)ntop = 2                       // 输出的blob的个数,两个是指数据和标签(必要参数)transfrom_param = dict(        // 预处理的参数crop_size = 64              // 对样本裁剪的大小scale = 1                   // 对样本进行缩放,乘上scalemean_file = meanfile_path   // 常用预处理方法,减去均值mean_value = [104,110,123]  // 支持值和均值文件,任选其一mirror = True               // 是否随机对图像进行随机的反转))(2). HDF5 格式的数据层的定义L.HDF5Data(source = path                 // 数据的路径(必要参数)batch_size = batch_size       // 批处理大小(必要参数)shuffle = false               // 是否将样本随机打乱顺序)(3). ImageData 格式的数据层的定义每张图片的名称作为一行,记录到txt文件中L.ImageData(source = list_path            // 数据的路径(必要参数)batch_size = batch_size       // 批处理大小(必要参数)new_width = 64                // 相当于reshapenew_height = 64               // 相当于reshapentop = 2                      // 输出的blob的个数,两个是指数据和标签(必要参数)shuffle = false               // 是否将样本随机打乱顺序transform_param = dict(crop_size = 64              // 对样本裁剪的大小scale = 1                   // 对样本进行缩放,乘上scalemean_file = meanfile_path   // 常用预处理方法,减去均值mirror = True               // 是否随机对图像进行随机的反转))(4).重写数据读取L.Python(module = "read_data"            // 重写程序所在文件名称layer = "input_layer"           // 重写的类名ntop = 2                        // 输出的blob的个数para_str = str(dict(            // 重写的程序需要传入的参数split = "train"                     // 标注处理训练样本还是测试样本data_dir = path                     // 数据的路径train_data_name = “traindataname”   // 训练样本的名字test_data_name = "testdataname"     // 测试样本的名字...........                         // 其他程序需要用的参数))2. 卷积层的定义L.Convolution(bottom = bottom            // 输入的blobnum_output =               // 输出的blob的个数bias_term = true           // 模型是否包含偏置项默认为truepad = 0                    // 是否对样本进行扩展,为了保持维度不变,默认为0kernel_size = 3            // 卷积核的大小stride = 1                 // 卷积的步长,默认为1pad_h = 0                  // 扩展的高度,默认为0,不可与pad同时存在pad_w = 0                  // 扩展的宽度,默认为0,不可与pad同时存在kernel_h = 0               // 卷积核的高度,用于非正方形卷积核,与kernel_size不可同时存在kernel_w = 0               // 卷积核的宽度,用于非正方形卷积核,与kernel_size不可同时存在stride_h = 0               // 纵向步长,不可与stride同时存在stride_w = 0               // 横向步长,不可与stride同时存在weight_filler = dict(type = 'xavier') // 权重的填充bias_filler = dict(type = 'constant') // 偏置的填充)3. 激活层的定义--reluL.RELU(bottom = bottom                    // 输入的blobnegative_slope = 0                 // 如果负数则输出negative_slope,默认为0,基本版本in_palce = true                    // 用输出blob替换输入blob,可以节省内存,默认为true)4. Pooling层的定义L.Pooling(bottom = bottom                    // 输入的blobpool=P.Pooling.MAX                 // pooling方式,包括MAX,AVE,STOCHASTICpad = 0                            // 扩展输入的数据,默认为0pad_h = 0                          // 扩展输入数据的高,不可与pad同时存在pad_w = 0                          // 扩展输入数据的宽,不可与pad同时存在kernel_size = 2;                   // pooling核的大小kernel_h = 0;                      // pooling核的高,不可和kernel_size同时存在kernel_w = 0;                      // pooling核的宽,不可和kernel_size同时存在stride = 1                         // pooling的步长stride_h = 1;                      // pooling纵向的步长,不可和stride同时存在stride_w = 1;                      // pooling横向的步长,不可和stride同时存在global_pooling = false             // 全局pooling,即整个feature map pooling出一个值)
5. FullConnect层的定义L.InnerProduct(                bottom = bottom            // 输入的blobnum_output = nout          // 输出神经元的个数bias_term = true           // 是否有偏置项weight_filler = dict(type = 'xavier')  // 权重的填充bias_filler = dict(type = 'constant')  // 偏置的填充)6. Dropout层的定义L.Dropout(            bottom = bottom                // 输入的blobdropout_ratio = 0.5            // 按照1-ratio的概率置零            in_place=True                  // 直接替换blob)7. Loss层的定义L.SoftmaxWithLoss(                    bottom = bottom         // 输入的blob                     label = label           // 标签)8. Accuracy层的定义L.Accuracy(            bottom = bottom                 // 输入的blob             label = label                   // 标签)



0 0
原创粉丝点击