【Tensorflow】卷积层下
池化用于减少特征数据量,最大值池化可以提取图片纹理,均值池化可以保留背景特征。
最大值池化
tf.keras.layers.MaxPool2D(
pool_size = 池化核尺寸, #正方形写核长整数或(核高h,核宽w)
strides = 池化步长, #步长整数或纵向步长h,横向步长w,默认为pool_size
padding = 'valid' or 'same' #使用全零填充是same,不使用是valid(默认)
)
均值池化
tf.keras.layers.AveragePooling2D(
pool_size = 池化核尺寸, #正方形写核长整数或(核高h,核宽w)
strides = 池化步长, #步长整数或纵向步长h,横向步长w,默认为pool_size
padding = 'valid' or 'same' #使用全零填充是same,不使用是valid(默认)
)
调用实例
MaxPool2D(pool_size = (2,2), strides = 2, padding = 'same)
为了缓解神经网络过拟合,在神经网络的训练过程中,常把隐藏层的部分神经元按照一定比例从神经网络中临时舍弃。在使用神经网络时,再把所有神经元恢复到神经网络中。TensorFlow中提供了Dropout函数,用于实现舍弃。
TensorFlow描述:
tf.keras.layers.Dropout(舍弃的概率)
调用实例
Dropout(0.2) #括号里写神经元舍弃的比例,随机舍弃掉20%的神经元
借助卷积核提取特征后,送入全连接网络。
卷积神经网络的主要模块有五个:
卷积(Convolutional)、批标准化(Batch Normalize)、激活(Activation)、池化(Pooling)、全连接(Fully Connect)
卷积是什么? 卷积就是特征提取器,就是CBAPD
model = tf.keras.models.Sequential([
Conv2D(filters = 6, kernel_size = (5,5), padding = 'same'), # 卷积层,卷积核(5,5)
BatchNormalization(), # 批标准化
Activation('relu'), # 激活层
MaxPool2D(pool_size = (2,2), strides = 2, padding = 'same'), # 最大池化,池化窗口设置为(2,2)
Dropout(0.2), # 舍弃,以20%的比例随机舍弃神经元
)
提供50000张3232像素点的十分类彩色图片和标签,用于训练;
提供10000张3232像素点的十分类彩色图片和标签,用于测试。
十个分类分别为:
名称 | 标签 |
---|---|
airplane 飞机 | 0 |
automobile 汽车 | 1 |
bird 鸟 | 2 |
cat 猫 | 3 |
deer 鹿 | 4 |
dog 狗 | 5 |
frog 青蛙 | 6 |
horse 马 | 7 |
ship 船 | 8 |
truck 卡车 | 9 |
导入cifar10数据集 |
cifar10 = tf.keras.datasets.cifar10
(x_train,y_train),(x_test,y_test) = cifar10.load_data()
在cifar10上进行的操作代码见下篇。