参数 | 描述 |
---|---|
inputs | 把上一层的输出作为输入(直接将上一层作为参数输入即可) |
input_shape | 当作为模型的第一层时,需要指出输入的形状(samples,rows,cols,channels) ,只指出后三维即可,第一维度按batch_size自动指定 |
filters | 卷积过滤器的数量,对应输出的维数 |
kernel_size | 整数,过滤器的大小,如果为一个整数则宽和高相同 |
strides | 横向和纵向的步长,如果为一个整数则横向和纵向相同 |
padding | valid:表示不够卷积核大小的块,则丢弃;same表示不够卷积核大小的块就补0,所以输出和输入形状相同 |
data_format | channels_last 为(batch,height,width,channels),channels_first 为(batch,channels,height,width) |
dilation_rate | |
activation | 激活函数,None是线性函数 |
use_bias | 是否使用偏差量 |
kernel_initializer | 卷积核的初始化。 |
bias_initializer | 偏差向量的初始化。如果是None,则使用默认的初始值。 |
kernel_regularizer | 卷积核的正则项 |
bias_regularizer | 偏差向量的正则项 |
activity_regularizer | 输出的正则函数 |
bias_constraint | 映射函数,当偏差向量被Optimizer更新后应用到偏差向量上。 |
trainable | Boolean类型。 |
name | 字符串,层的名字。 |
reuse | Boolean类型,表示是否可以重复使用具有相同名字的前一层的权重。 |
例子
import numpy as np
import tensorflow as tf
img = np.array([[1,1,1],
[1,1,1],
[1,1,1,]]).astype(np.float32)
img = tf.constant(img) # 将numpy转换为tensorflow
img = tf.expand_dims(img,2) # 在最后一维度,添加chanel通道,默认值为1.0
img = tf.expand_dims(img,0) # 在最前一维度,添加图片,用来表示图片
img.shape # 现在的形状是(1,3,3,1)既(图片,高度,宽度,通道),第一维可以索引到某个具体图片,二三维度可以索引到具体像素点,第四维度可以索引到某个通道的值
conv = tf.keras.layers.Conv2D(filters=1,kernel_size=2,strides=(1,1),padding='same')
conv(img)
4维的张量:
channel_last:(samples,rows,cols,channels) 默认选项
channel_first:(samples,channels,rows,cols)
4维的张量:
channel_last:(samples, new_rows, new_cols, filters) 默认
channel_first:(samples, filters, new_rows, new_cols)
__init__(
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,
**kwargs
)
参考文献:
官网
https://www.w3cschool.cn/tensorflow_python/tf_nn_conv2d.html
https://blog.csdn.net/HappyRocking/article/details/80243790
https://www.itcodemonkey.com/article/8794.html
expand_dim
tf.nn tf.keras