tensorflow:归一化和批归一化,激活函数,及dropout

在深度学习中,optimizer就是优化函数,这部分相当于机器学习中,自己写的优化函数部分,直接利用
SGD:随机梯度下降算法

激活函数的作用
引入非线性因素,使得升级网络更为复杂。

归一化:
训练模型不会因为部分畸形数据而导致训练模型出现差错
(在之前的博客中有提到)
批归一化:
每一层的激活值都进行归一化的过程

数据未进行批归一化前在这里插入图片描述
使用后
tensorflow:归一化和批归一化,激活函数,及dropout_第1张图片
可以看出准确率的提升非常的大

#对象的使用
model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape = [28,28]))
for _ in range(20):
    model.add(keras.layers.Dense(100,activation = 'relu'))
    #批归一化操作,每一层的激活值都进行归一化的过程
    model.add(keras.layers.BatchNormalization())
    """
    激活函数也可以在批归一化的后面,如下
    model.add(keras.layers.Dense(100))
    model.add(keras.layers.BatchNormalization())
    model.add(keras.layers.Activation('relu'))
    """
model.add(keras.layers.Dense(10,activation = 'softmax'))
#损失函数,参数调节
# loss目的将y的值转换为向量
# optimizer参数的调节。
# metrics其他的性能指标,metrics=[‘accuracy’]为典型用法
model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
# model.summary()

#进行函数的训练
#epochs=10 代表进行了十期的模型训练
# 该出使用回调函数,目的使用回调函数来观察训练过程中网络内部的状态和统计信息
# TensorBoard, earlystopping, ModelCheckpoint。
#创建文件夹logdir
logdir = os.path.join('callbacks')
#判断文件夹是否存在
if not os.path.exists(logdir):
    os.mkdir(logdir)#不存在就创建新的文件夹
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")
callbacks = [
    keras.callbacks.TensorBoard(logdir),#将logdir传入Tensorboard中
    keras.callbacks.ModelCheckpoint(output_model_file,#创建文件名
                                    save_best_only = True),#save—best-only 默认保存最好的模型
    keras.callbacks.EarlyStopping(patience = 5,min_delta=1e-3)
]
history = model.fit(x_train_scale,y_train,epochs=10,
          validation_data=(x_valid_scale,y_valid),
                    callbacks = callbacks)


过拟合
解释:(在train的表现很好,在valid的表现不是很好)。
原因:参数过多,记住样本,不能泛化。
dropout:在前馈神经网络中,随机的删除一部分神经元,目的降低计算量,防止过拟合

epoch:即在原始的训练集上,进行重复的训练,因为一般情况而言,如果有庞大的训练集进行计算,那么你的目标函数的准度就会更好,但是这种庞大训练集是不存在的,所以就出现了epoch,在原有的训练集进行多次重复
从而达到较好的w,b
通俗的解释就是相当于你背单词的时候,重复的多背几次,你就能记住这个单词;又好比老师罚你抄一个单词很多很多遍,然后你就觉得这个单词看起来怪怪的好像不是这么写的,这就是过拟合。

你可能感兴趣的:(深度学习,tensorflow,深度学习,tensorflow)