卷积中的数据流变化

参考这篇文章

  • 全连接层的参数计算方法,可训练
    Dense_paremeters_num = (输入数据的维度+1)* 本层神经元个数
    +1是因为线性计算公式里有个偏置项。每个filter提取的结果求和后加偏置项,然后送入激活函数。求和部分类似线性回归公式。

  • 卷积层的参数计算方法,可训练
    Conv_parameters_num = (卷积核长核宽输入通道数+1) * 本层卷积核数目

  • Non-trainable params的理解,非训练参数指的是不用梯度下降法来训练的参数。

  • BatchNormalization中的训练参数计算方法,【注释1】
    Non-trainable_params = 输入通道数 * 2 # μ和σ不是
    Trainable_params = 输入通道数 * 2 # γ和β是可训练参

  • 实验:

  1. 可训练参数打印
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras import layers
model = Sequential()
model.add(layers.Dense(7, activation='relu', input_shape=(8,)))
model.add(layers.Dense(13, activation='relu'))
model.add(layers.Dense(5, activation='relu'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])
model.summary()

在这里插入图片描述

model = Sequential()
model.add(layers.Conv2D(16, (3,3), activation="relu", input_shape=(8,8,3)))
model.add(layers.Conv2D(32, (2,2), activation="relu"))
model.add(layers.MaxPool2D(pool_size=(2, 2), strides=2))
model.add(layers.Dropout(0.25))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation="relu"))
model.add(layers.Dropout(0.25))
model.add(layers.Dense(16, activation="softmax"))
model.summary()

在这里插入图片描述
2. 不可训练参数学习。

from keras.layers import  Dense
from keras.models import Sequential
model = Sequential()
model.add(Dense(10, trainable=False, input_shape=(100,)))
model.summary()

在这里插入图片描述
不可训练参数也受每层的trainable参数影响

model = Sequential()
model.add(Dense(10, trainable=False, input_shape=(100,)))
model.layers[0].trainable = True
model.summary()

在这里插入图片描述
3. 并不是所有参数都可以训练,BatchNormalization里的均值和方差不可以训练。[gamma weights, beta weights, moving_mean, moving_variance]前两个可以训练。

所以,BatchNormalizatin每层会产生2N个不可训练参数,N是输入通道数。
model = Sequential()
model.add(Dense(10, trainable=False, input_shape=(100,)))
model.layers[0].trainable = True
model.add(BatchNormalization())
model.summary()

在这里插入图片描述

注释1:批正规化的流程图描述。
图片来自
图片来自bath normalization的详细描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值