zoukankan      html  css  js  c++  java
  • 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07

    多层感知器:
    在这里插入图片描述

    优化使用梯度下降算法

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    学习速率

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    学习速率选取原则

    在这里插入图片描述
    反向传播
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    SGD
    在这里插入图片描述
    在这里插入图片描述
    RMSprop
    在这里插入图片描述
    在这里插入图片描述
    Adam
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    learning_rate=0.01

    # -*- coding: utf-8 -*-
    # -*- coding: utf-8 -*-
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告级别,不显示警告
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 下载数据集并划分为训练集和测试集
    (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
    # 归一化
    train_image=train_image/255
    test_image=test_image/255
    # 建立模型
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(10,activation="softmax"))
    
    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.01),
                 loss="sparse_categorical_crossentropy",
                 metrics=["acc"]
                 )
    #使用训练集训练模型
    model.fit(train_image,train_lable,epochs=5)
    # # 使用测试集进行评价
    # model.evaluate(test_image,test_label)
    

    在这里插入图片描述
    learning_rate=0.001

    # -*- coding: utf-8 -*-
    # -*- coding: utf-8 -*-
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告级别,不显示警告
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 下载数据集并划分为训练集和测试集
    (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
    # 归一化
    train_image=train_image/255
    test_image=test_image/255
    # 建立模型
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(10,activation="softmax"))
    
    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
                 loss="sparse_categorical_crossentropy",
                 metrics=["acc"]
                 )
    #使用训练集训练模型
    model.fit(train_image,train_lable,epochs=5)
    # # 使用测试集进行评价
    # model.evaluate(test_image,test_label)
    

    在这里插入图片描述

    网络优化与超参数选择

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如何提高网络得拟合能力
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    # -*- coding: utf-8 -*-
    # -*- coding: utf-8 -*-
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告级别,不显示警告
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 下载数据集并划分为训练集和测试集
    (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
    # 归一化
    train_image=train_image/255
    test_image=test_image/255
    # 建立模型
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(128,activation="relu")) # 增加隐藏层提高拟合能力
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(10,activation="softmax"))
    
    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
                 loss="sparse_categorical_crossentropy",
                 metrics=["acc"]
                 )
    #使用训练集训练模型
    model.fit(train_image,train_lable,epochs=10)
    # # 使用测试集进行评价
    # model.evaluate(test_image,test_label)
    

    在这里插入图片描述

    Dropout 抑制过拟合与网络超参数总原则

    在这里插入图片描述
    为什么说Dropout可以解决过拟合
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    增加层数,直到过拟合
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # 下载数据集并划分为训练集和测试集
    (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
    
    # 归一化
    train_image=train_image/255
    test_image=test_image/255
    
    # 建立模型
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(128,activation="relu"))# 增加隐藏层提高拟合能力
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dense(10,activation="softmax"))
    
    model.summary()
    

    在这里插入图片描述

    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
                 loss="sparse_categorical_crossentropy",
                 metrics=["acc"]
                 )
    
    # 使用训练集训练模型 并验证测试集
    history = model.fit(train_image,train_lable,
                        epochs=10,
                       validation_data=(test_image,test_label))
    

    在这里插入图片描述

    history.history.keys() # [训练集'loss', 'acc', 测试集'val_loss', 'val_acc']
    

    在这里插入图片描述

    # 如下图过拟合现象,在训练集上一直在下降,在测试集上到7层的时候反而上升了
    plt.plot(history.epoch,history.history.get("loss"),label="loss")
    plt.plot(history.epoch,history.history.get("val_loss"),label="val_loss")
    plt.legend()
    

    在这里插入图片描述

    # 通过正确率绘图反映模型在训练集上正确率一直在上升,在测试集上反而下降了
    plt.plot(history.epoch,history.history.get("acc"),label="acc")
    plt.plot(history.epoch,history.history.get("val_acc"),label="val_acc")
    plt.legend()
    

    在这里插入图片描述
    在这里插入图片描述

    使用Dropout 抑制过拟合
    import tensorflow as tf
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # 下载数据集并划分为训练集和测试集
    (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
    
    # 归一化
    train_image=train_image/255
    test_image=test_image/255
    
    # 建立模型 (3层128个隐藏单元)
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dropout(0.5))
    model.add(tf.keras.layers.Dense(128,activation="relu"))# 增加隐藏层提高拟合能力
    model.add(tf.keras.layers.Dropout(0.5)) # 添加Dropout层抑制过拟合,随机丢弃50%数据
    model.add(tf.keras.layers.Dense(128,activation="relu"))
    model.add(tf.keras.layers.Dropout(0.5))
    model.add(tf.keras.layers.Dense(10,activation="softmax"))
    
    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
                 loss="sparse_categorical_crossentropy",
                 metrics=["acc"]
                 )
    
    # 使用训练集训练模型 并验证测试集
    history = model.fit(train_image,train_lable,
                        epochs=10,
                       validation_data=(test_image,test_label))
    

    在这里插入图片描述
    在这里插入图片描述

    
    plt.plot(history.epoch,history.history.get("loss"),label="loss")
    plt.plot(history.epoch,history.history.get("val_loss"),label="val_loss")
    plt.legend()
    

    在这里插入图片描述

    
    plt.plot(history.epoch,history.history.get("acc"),label="acc")
    plt.plot(history.epoch,history.history.get("val_acc"),label="val_acc")
    plt.legend()
    

    在这里插入图片描述

  • 相关阅读:
    php备份数据库类分享
    nginx https配置后无法访问,可能防火墙在捣鬼
    linux服务器,svn认证失败,配置问题,防火墙等等
    为了解决linux配置Nginx 只能关闭防火墙才能访问的问题
    nginx 防火墙、权限问题
    思数云hadoop目录
    delete
    善用GIMP(Linux下的Photoshop),图像处理轻松又自由
    超赞干货!2016年新鲜出炉的20款网页开发工具推荐
    10款Web前端工具
  • 原文地址:https://www.cnblogs.com/gemoumou/p/14186275.html
Copyright © 2011-2022 走看看