返回目录
理论部分主要写点以前看吴恩达视频没有的或者不太熟悉的了。
实际项目中的照片多是高分辨率彩色图,但待优化的参数过多容易导致模型过拟合,实际应用时,会先对原始图像进行特征提取,再把提取到的特征送给全连接网络。
卷积计算可认为是一 种有效提取图像特征的方法。
感受野(Receptive Field) : 卷积神经网络各输出特征图中的每个像素点,在原始输入图片上映射区域的大小。就是说,对于5 * 5 的原始图片,用一个过滤器为3 * 3的进行卷积得到3 * 3 的输出为他的感受野;或者使用过滤器为 5 * 5 的只输出一个,也是他的感受野;
对于过滤器大小的选取,要考虑道计算量和参数量:
#5.4 TF描述卷积层
tf.keras.layers.Conv2D(
filters=卷积核个数,
kernel_size=卷积核尺寸,#正方形写核长整数,或(核高h,核宽w)
strides=滑动步长,#横纵向相同写步长整数,或(纵向步长h,横向步长w)
padding="same" or "valid",# 使用全零填充时same,不使用时valid(默认)
activation="relu" or "sigmoid" or "tanh" or "softmax"so on, # 如有BN此处不写
input_shape = (高,宽,通道数) #输入特征图维度,可省略
)
神经网络对0附近的数值很敏感,但是随着网络层数的增加,特征数据会出现偏离0均值的情况。标准化会使数据符合0均值,1标准差的分布,批标准化看图
这个不是太懂,没学过欸以前。。。
BN层在卷积层之后,激活层之前
#5.5批标准化
tf.keras.layers.BatchNormalization()
#使用方法:
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(filters=6,kernel_size=(5,5),padding='same'), # 卷积层
tf.keras.layers.BatchNormalization(),# BN层
tf.keras.layers.Activation('relu') # 激活层
#其他层
])
#5.6池化
tf.keras.layers.MaxPool2D() # 最大池化
tf.keras.layers.AveragePooling2D() # 平均池化
'''
tf.keras.layers.MaxPool2D(
pool_size = 池化核尺寸, #正方形写核长整数,或(核高h,核宽w)
strides = 池化步长,#横纵向相同写步长整数,或(纵向步长h,横向步长w)
padding = 'valid' or 'same' #使用全零填充时same,不使用时valid(默认)
)
tf.keras.layers.AveragePooling2D() # 参数与他相同
'''
#使用方法:
#使用方法:
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(filters=6,kernel_size=(5,5),padding='same'), # 卷积层
tf.keras.layers.BatchNormalization(),# BN层
tf.keras.layers.Activation('relu') # 激活层
tf.keras.layers.MaxPool2D(pool_size=(2,2),strides=2,padding='same'),
#其他层
])
就是那个随机失活的操作,Dropout的操作
#5.7拾弃
# 就是那个随机失活的操作,Dropout的操作
tf.keras.layers.Dropout(0.2) # dropout层 里面参数是舍弃的比例
# 使用方法:
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(filters=6, kernel_size=(5, 5), padding='same'), # 卷积层
tf.keras.layers.BatchNormalization(), # BN层
tf.keras.layers.Activation('relu') # 激活层
tf.keras.layers.MaxPool2D(pool_size=(2, 2), strides=2, padding='same'),
tf.keras.layers.Dropout(0.2) # dropout层 里面参数是舍弃的比例
# 其他层
])
解决了网络层数的增加,错误率增加的一些问题
每调用一次右边的类,生成一个小黄色块
第六讲我就没看了,根据老师的这个总结,可以先练习,先背会鸢尾花和手写的这俩经典,然后根据本页的图多写写网络,按理说这么练习,练几天就可以真的是简简单单的入门了,看程序头不懵了吧。。。。。。。。这个教程真棒!
2020年7月7日
返回目录