tf.keras.layers.Conv2D

 tensorflow中tensor的维度顺序默认是 [batch, height, width, channel] 

2D卷积层

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)

参数详解

  • filters: 卷积中滤波器的数量,表示输出张量的通道数
  • kernel_size: 卷积窗口的宽度和高度
  • strides: 卷积沿宽度和高度方向的步长
  • padding: 'VALID' 或 'SAME','VALID'表示无填充,'SAME'表示用0填充
  • data_format: 表示输入张量的维度顺序,默认为 [batch, height, width, channel]
  • dilation_rate: 膨胀卷积的膨胀率
  • activation: 要使用的激活函数 
  • use_bias: 布尔值,该层是否使用偏置向量
  • kernel_initializerkernel 权值矩阵的初始化器
  • bias_initializer: 偏置向量的初始化器
  • kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数
  • bias_regularizer: 运用到偏置向量的正则化函数
  • activity_regularizer: 运用到层输出(它的激活值)的正则化函数
  • kernel_constraint: 运用到 kernel 权值矩阵的约束函数
  • bias_constraint: 运用到偏置向量的约束函数

卷积后的矩阵尺寸大小计算公式

输入大小为 W ×W,kernel_size为 F×F,strides为 S,输出大小为 N ×N

当 padding='VALID' 时,

N=\lceil \frac{W-F+1}{S} \rceil

当 padding='SAME' 时,

N=\lceil \frac{W}{S} \rceil


示例

from tensorflow.keras.layers import Conv2D
import tensorflow as tf
import numpy as np

# 定义一个卷积层,用0填充
conv1 = Conv2D(filters=32,
               kernel_size=[3, 3],
               strides=[2, 2],
               padding='same')

# 定义一个卷积层,无填充
conv2 = Conv2D(filters=32,
               kernel_size=[3, 3],
               strides=[2, 2],
               padding='valid')

# 生成一个维度为[64, 5, 5, 3]的矩阵
x = np.random.random((64, 5, 5, 3))

# 转成tensor类型,第一个维度64表示batch
# numpy中的数据类型和tensorflow中的数据类型完全兼容,所以这一步可以省略
x = tf.convert_to_tensor(x)
print(x.shape) # [64, 5, 5, 3]

# 进行卷积
y1 = conv1(x)
print(y.shape) # [64, 3, 3, 32]

# 进行卷积
y2 = conv2(x)
print(y.shape) # [64, 2, 2, 32]

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
boston_housing module: Boston housing price regression dataset. cifar10 module: CIFAR10 small images classification dataset. cifar100 module: CIFAR100 small images classification dataset. fashion_mnist module: Fashion-MNIST dataset. imdb module: IMDB sentiment classification dataset. mnist module: MNIST handwritten digits dataset. reuters module: Reuters topic classification dataset. import tensorflow as tf from tensorflow import keras fashion_mnist = keras.datasets.fashion_mnist (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data() mnist = keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() cifar100 = keras.datasets.cifar100 (x_train, y_train), (x_test, y_test) = cifar100.load_data() cifar10 = keras.datasets.cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data() imdb = keras.datasets.imdb (x_train, y_train), (x_test, y_test) = imdb.load_data() # word_index is a dictionary mapping words to an integer index word_index = imdb.get_word_index() # We reverse it, mapping integer indices to words reverse_word_index = dict([(value, key) for (key, value) in word_index.items()]) # We decode the review; note that our indices were offset by 3 # because 0, 1 and 2 are reserved indices for "padding", "start of sequence", and "unknown". decoded_review = ' '.join([reverse_word_index.get(i - 3, '?') for i in x_train[0]]) print(decoded_review) boston_housing = keras.datasets.boston_housing (x_train, y_train), (x_test, y_test) = boston_housing.load_data() reuters= keras.datasets.reuters (x_train, y_train), (x_test, y_test) = reuters.load_data() tf.keras.datasets.reuters.get_word_index( path='reuters_word_index.json' )

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值