这篇教程深度学习(六)keras常用函数学习写得很实用,希望能帮到您。
Keras是什么? Keras:基于Theano和TensorFlow的深度学习库 Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
- 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
- 支持CNN和RNN,或二者的结合
- 无缝CPU和GPU切换
kears Dense ()函数--全连接层
keras.layers.core.Dense ( units, activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None ) 参数: units:大于0的整数,代表该层的输出维度。 activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) use_bias: 布尔值,是否使用偏置项 kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers kernel_regularizer:施加在权重上的正则项,为Regularizer对象 bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象 activity_regularizer:施加在输出上的正则项,为Regularizer对象 kernel_constraints:施加在权重上的约束项,为Constraints对象 bias_constraints:施加在偏置上的约束项,为Constraints对象 input_dim:可以指定输入数据的维度
kears Conv2D()函数--卷积层
若不懂卷积概念可看:深度学习(二)神经网络中的卷积和反卷积原理
keras.layers.Conv2D(filters, kernel_size,
strides=(1, 1),
padding='valid',
data_format=None,
dilation_rate=(1, 1),
activation=None, use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None)
2D 卷积层 (例如对图像的空间卷积)。
该层创建了一个卷积核, 该卷积核对层输入进行卷积, 以生成输出张量。 如果 use_bias 为 True, 则会创建一个偏置向量并将其添加到输出中。 最后,如果 activation 不是 None ,它也会应用于输出。
当使用该层作为模型第一层时,需要提供 input_shape 参数 (整数元组,不包含样本表示的轴),例如, input_shape=(128, 128, 3) 表示 128x128 RGB 图像, 在 data_format="channels_last" 时。
参数
- filters: 整数,输出空间的维度 (即卷积中滤波器的输出数量)。
- kernel_size: 一个整数,或者 2 个整数表示的元组或列表, 指明 2D 卷积窗口的宽度和高度。 可以是一个整数,为所有空间维度指定相同的值。
- strides: 一个整数,或者 2 个整数表示的元组或列表, 指明卷积沿宽度和高度方向的步长。 可以是一个整数,为所有空间维度指定相同的值。 指定任何 stride 值 != 1 与指定
dilation_rate 值 != 1 两者不兼容。
- padding:
"valid" 或 "same" (大小写敏感)。
- data_format: 字符串,
channels_last (默认) 或 channels_first 之一,表示输入中维度的顺序。 channels_last 对应输入尺寸为 (batch, height, width, channels) , channels_first 对应输入尺寸为 (batch, channels, height, width) 。 它默认为从 Keras 配置文件 ~/.keras/keras.json 中 找到的 image_data_format 值。 如果你从未设置它,将使用 "channels_last"。
- dilation_rate: 一个整数或 2 个整数的元组或列表, 指定膨胀卷积的膨胀率。 可以是一个整数,为所有空间维度指定相同的值。 当前,指定任何
dilation_rate 值 != 1 与 指定 stride 值 != 1 两者不兼容。
- activation: 要使用的激活函数 (详见 activations)。 如果你不指定,则不使用激活函数 (即线性激活:
a(x) = x )。
- use_bias: 布尔值,该层是否使用偏置向量。
- kernel_initializer:
kernel 权值矩阵的初始化器 (详见 initializers)。
- bias_initializer: 偏置向量的初始化器 (详见 initializers)。
- kernel_regularizer: 运用到
kernel 权值矩阵的正则化函数 (详见 regularizer)。
- bias_regularizer: 运用到偏置向量的正则化函数 (详见 regularizer)。
- activity_regularizer: 运用到层输出(它的激活值)的正则化函数 (详见 regularizer)。
- kernel_constraint: 运用到
kernel 权值矩阵的约束函数 (详见 constraints)。
- bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
输入尺寸
- 如果 data_format='channels_first', 输入 4D 张量,尺寸为
(samples, channels, rows, cols) 。
- 如果 data_format='channels_last', 输入 4D 张量,尺寸为
(samples, rows, cols, channels) 。
输出尺寸
- 如果 data_format='channels_first', 输出 4D 张量,尺寸为
(samples, filters, new_rows, new_cols) 。
- 如果 data_format='channels_last', 输出 4D 张量,尺寸为
(samples, new_rows, new_cols, filters) 。
别看上面的参数一堆吓死人,其实我们在实际运用的时候用的就只有几个而已:
inputs = Input(shape=(n_ch,patch_height,patch_width))
conv1 = Conv2D(32, (3, 3), activation='relu', padding='same',data_format='channels_first')(inputs) #这个小括号填inputs是代表这层模型连接在inputs之后
当然还可以用kears内置的序贯模型add添加构成模型图:
model = Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64, activation='relu', input_dim=20))
kears MaxPooling2D()函数--池化层
若不懂池化概念可看:深度学习(一)神经网络中的池化与反池化原理
keras.layers.pooling.MaxPooling2D( pool_size=(2, 2), strides=None, padding='valid', data_format=None )
参数: pool_size:整数或长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(2,2)将使图片在两个维度上均变为原长的一半。为整数意为各个维度值相同且为该数字。 strides:整数或长为2的整数tuple,或者None,步长值。 padding:‘valid’或者‘same’ data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。
还是一样的好多东西默认就行了,下面就是一个2*2的池化层:
pool1 = MaxPooling2D((2, 2))(conv1)
深度学习(二)神经网络中的卷积和反卷积原理 Python实现批量修改图片格式和大小的方法 |