caffe Layers相关的API

导入需要用到的模块,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                   // 对样本进行缩放,乘上scale
							mean_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                // 相当于reshape
			new_height = 64               // 相当于reshape
			ntop = 2                      // 输出的blob的个数,两个是指数据和标签(必要参数)
			shuffle = false               // 是否将样本随机打乱顺序
			transform_param = dict(
							crop_size = 64              // 对样本裁剪的大小
							scale = 1                   // 对样本进行缩放,乘上scale
							mean_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            // 输入的blob
		num_output =               // 输出的blob的个数
		bias_term = true           // 模型是否包含偏置项默认为true
		pad = 0                    // 是否对样本进行扩展,为了保持维度不变,默认为0
		kernel_size = 3            // 卷积核的大小
		stride = 1                 // 卷积的步长,默认为1
		pad_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. 激活层的定义--relu
L.RELU(
	bottom = bottom                    // 输入的blob
	negative_slope = 0                 // 如果负数则输出negative_slope,默认为0,基本版本
	in_palce = true                    // 用输出blob替换输入blob,可以节省内存,默认为true
)

4. Pooling层的定义
L.Pooling(
		bottom = bottom                    // 输入的blob
		pool=P.Pooling.MAX                 // pooling方式,包括MAX,AVE,STOCHASTIC
		pad = 0                            // 扩展输入的数据,默认为0
		pad_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            // 输入的blob
				num_output = nout          // 输出神经元的个数
				bias_term = true           // 是否有偏置项
				weight_filler = dict(type = 'xavier')  // 权重的填充
				bias_filler = dict(type = 'constant')  // 偏置的填充
)

6. Dropout层的定义
L.Dropout(
            bottom = bottom                // 输入的blob
			dropout_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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值