Conv2D & MaxPooling2D & Dropout & concatenate

keras.layers.convolutional.Conv2D

2D卷积层(例如,图像上的空间卷积)。
该层创建一个卷积内核,该卷内核与层输入卷积以产生一个输出张量。 如果use_bias为True,则创建偏置向量并将其添加到输出。 最后,如果激活不是None,它也会应用于输出。
将此图层用作模型中的第一个图层时,请提供关键字参数input_shape(整数元组,不包括示例轴),例如 input_shape =(128,128,3),用于data_format =“channels_last”中的128x128 RGB图片。

def __init__(self,
             filters: Any,
             kernel_size: Any,
             strides: int = (1, 1),
             padding: str = 'valid',
             data_format: Any = None,
             dilation_rate: int = (1, 1),
             activation: Any = None,
             use_bias: bool = True,
             kernel_initializer: str = 'glorot_uniform',
             bias_initializer: str = 'zeros',
             kernel_regularizer: Any = None,
             bias_regularizer: Any = None,
             activity_regularizer: Any = None,
             kernel_constraint: Any = None,
             bias_constraint: Any = None,
             **kwargs: Any) -> Optional[Any]

参数

  • filters:整数,输出空间的维数(即卷积中输出滤波器的数量)。
  • kernel_size:整数或2个整数的元组/列表,指定2D卷积窗口的高度和宽度。可以是单个整数,以指定所有空间维度的相同值。
  • strides:整数或2个整数的元组/列表,指定卷积沿高度和宽度的步幅。可以是单个整数,以指定所有空间维度的相同值。指定任意!=1的步幅值与指定任意!=1的dilation_rate值不兼容。
  • padding:"valid"或"same"之一(不区分大小写)。
    请注意,"same"在跨步数(strides)!=1的情况下在后端稍有不一致。,如[here]所述(https://github.com/keras-team/keras/pull/9473#issuecomment-372166860)
  • data_format:一个字符串,“channels_last”或“channels_first”之一。输入中维度的排序。

“channels_last”对应于具有形状(batch, height, width,channels)的输入;
而“channels_first”对应于具有形状的输入(batch, channels, height, width))。
它默认为〜/.keras/keras.json中Keras配置文件中的image_data_format值。如果你从未设置它,那么它将是“channels_last”。

  • dilation_rate:整数或2个整数的元组/列表,指定用于扩张卷积的扩张率。 可以是单个整数,以指定所有空间维度的相同值。
    目前,指定任何dilation_rate值!= 1与指定任何stride value 值!= 1不兼容。
  • activation激活:要使用的激活功能(参见[activation](…/activations.md))。
    如果未指定任何内容,则不应用激活(即“linear”激活:a(x)= x)。
  • use_bias:Boolean,该层是否使用偏向量。
  • kernel_initializer:内核权重矩阵的初始化程序(参见[initializers](…/initializers.md))。
  • bias_initializer:偏置向量的初始化器。(参见[initializers](…/ initializers.md))。
  • kernel_regularizer:应用于内核权重矩阵的正则化函数。(参见[regularizer](…/
    regularizers.md))。
  • bias_regularizer:应用于偏置向量的正则化函数。(见[regularrizer](…/
    regularizers.md))。
  • activity_regularizer:应用于图层输出的正则化函数(其“激活”)。(见[regularrizer](…/
    regularizers.md))。
  • kernel_constraint:应用于内核矩阵的约束函数。(见[constraints](…/ constraints.md))。
  • bias_constraint:应用于偏置向量的约束函数。(见[constraints](…/ constraints.md))。

输入类型

  • 4D张量。
  • 如果data_format是“channels_first”,类型为: (batch, channels, rows, cols)。
  • 如果data_format是“channels_last”,类型为(batch, rows, cols, channels) 。

输出类型

  • 如果data_format是“channels_first”,4D张量的类型:(batch, filters, new_rows, new_cols)。
  • 如果data_format是“channels_last”,4D张量的类型: (batch, new_rows, new_cols, filters)。
  • 由于填充,行和列值可能已更改。

keras.layers.pooling.MaxPooling2D

def __init__(self,
             pool_size: Tuple[int, int] = (2, 2),
             strides: Any = None,
             padding: str = 'valid',
             data_format: Any = None,
             **kwargs: Any) -> Optional[Any]

参数

  • pool_size:整数或2个整数的整数或元组,缩小(垂直,水平)的因素。 (2,2)将在两个空间维度中将输入减半。如果只指定了一个整数,则两个维度将使用相同的窗口长度。
  • strides:整数,2个整数的元组或None。步幅值。 如果为None,则默认为pool_size。
  • padding: “valid” 或"same" 之一(不区分大小写)。
  • data_format:一个字符串,“channel_last”(默认)或“channels_first”。 输入中维度的排序。

channels_last对应于具有形状(batch, height, width, channels)的输入,而channels_first对应于具有形状的输入(batch, channels, height, width)。
它默认为〜/ .keras / keras.json中Keras配置文件中的image_data_format值。
如果你从未设置它,那么它将是“channels_last”。

输入类型

  • 如果data_format =‘channels_last’:4D张量的类型:(batch_size,rows,cols,channels)
  • 如果data_format=‘channels_first’:4D张量的类型:(batch_size,channels,rows,cols)

输出类型

  • 如果data_format=‘channels_last’:4D张量的类型:(batch_size,pooled_rows,pooled_cols,channels)
  • 如果data_format=‘channels_first’:4D张量的类型:(batch_size,channels,pooled_rows,pooled_cols)

keras.layers.core.Dropout

将Dropout应用于输入。 Dropout包括在训练期间每次更新时随机将输入单位的分数率设置为0,这有助于防止过度拟合。

def __init__(self,
             rate: Any,
             noise_shape: Any = None,
             seed: Any = None,
             **kwargs: Any) -> Optional[Any]

参数

  • rate:0和1之间的浮点数。输入单位的drop比率。
  • noise_shape:1维整型张量,表示与输入相乘的二进制丢失掩码(dropout
    mask)的shape。例如,如果您的输入的shape是(batch_size,timesteps,features),并且您希望所有时间步长的dropout掩码相同,则可以使用noise_shape =(batch_size,1,features)。
  • seed:用作随机种子的Python整数。

参考文献

[dropout:防止神经网络过度拟合的简单方法](http://www.jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf)

keras.layers.merge

摘自:https://blog.csdn.net/leviopku/article/details/82380710
merge(融合)层实现层的相加,相减,相乘

keras.layers.Add()
keras.layers.Subtract()
keras.layers.Multiply()

concatenate()实现层的拼接
keras.layers.concatenate([t1,t2],axis= )
t1,t2是需要拼接的变量;axis是拼接的轴,表示拼接的维度,axis=n表示从第n个维度进行拼接。

import numpy as np
import cv2
import keras.backend as K
import tensorflow as tf
 
t1 = K.variable(np.array([[[1, 2], [2, 3]], [[4, 4], [5, 3]]]))
t2 = K.variable(np.array([[[7, 4], [8, 4]], [[2, 10], [15, 11]]]))
d0 = K.concatenate([t1 , t2] , axis=-2)
d1 = K.concatenate([t1 , t2] , axis=1)
d2 = K.concatenate([t1 , t2] , axis=-1)
d3 = K.concatenate([t1 , t2] , axis=2)
 
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(d0))
    print(sess.run(d1))
    print(sess.run(d2))
  • 若是axis=0,则按0轴拼接t1和t2,即按第0个维度拼接,t1的第0轴整体就是t1本身,
    t2同理,所以直接拼接得到t= [t1 ~ t2] = [ t1[0], t1[1], t2[0], t2[1] ]=[ [[ 1. 2.],[ 2. 3.]], [[ 4. 4.],[ 5. 3.]], [[ 7. 4.],[ 8. 4.]], [[ 2. 10.],[15. 11.]]];
  • 按第1轴进行拼接则将第一个维度进行拼接,例如t[0]=[ t1[0]~t2[0] ] = [ t1[0][0], t1[0][1], t2[0][0], t2[0][1] ],然后拼接得t= [ t1[0],t2[0] ], [ t1[1],t2[1] ] ] = [ [[ 1. 2.],[ 2. 3.],[ 7. 4.],[ 8. 4.]], [[ 4. 4.],[ 5. 3.],[ 2. 10.],[15. 11.]] ];
  • 按第2轴拼接则取t1[0][0],t2[0][0]然后拼接。即:t[0][0]=[ t1[0][0], t2[0][0] ]。
  • 例如axis=1,t1[0]=[[1,2],[2,3]],t2[0]=[[7,4],[8,4]],拼接得到t[0]=[[1,2],[2,3],[7,4],[8,4]]
def concatenate(inputs: Any,
                axis: int = -1,
                **kwargs: Any) -> {__len__}

参数

输入:输入张量的列表(至少2个)。
axis:连接轴。
** kwargs:标准层关键字参数。

返回值

张量,输入与轴心轴的串联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值