zoukankan      html  css  js  c++  java
  • 大三寒假学习进度(8)

    1. 神经网络的搭建八股

    1.1 、 用Tensorflow API: tf.keras 搭建神经网络八股

    • 六步法:

      • import

      import相关模块,比如 import tensorflow as tf

      • train, test

      告知要喂入网络的训练集和测试集是什么

      也就是要指定训练集的输入特征x_train和训练集标签y_train

      测试集的输入特征x_test和测试集的标签y_test

      • model = tf.keras.models.Sequential

      在Sequential()中搭建网络结构,逐层描述每层网络

      • model.compile

      在compile()中配置训练方法,告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标

      • model.fit

      在fit()中执行训练过程,告知训练集和测试集的输入特征和标签,告知每个batch是多少,告知要迭代多少次数据集

      • model.summary

      用summary()打印出网络的结构和参数统计

    • model = tf.keras.models.Sequential([网络结构])


      Sequential()可以认为是个容器,里面封装了一个神经网络结构

      在Sequential中要描述从输入层到输出层每一层的网络结构

      网络结构举例:

      • 拉直层:tf.keras.layers.Flatten()
        • 这一层不含计算,只是形状转换,把输入特征拉直变成一维数组
      • 全连接层:tf,keras.layers.Dense(神经元个数,activation=“激活函数”,kernel_regularizer=哪种正则化)
        • activation(字符串给出)可选:relu、softmax、sigmoid、tanh
        • kernel_regularizer可选:tf.keras.regularizer.l1()、tf.keras.regularizers.l2()
      • 卷积层:tf.keras.layres.Conv2D(filters= 卷积核个数,kernel_size=卷积核尺寸。strides=卷积步长,padding="valid" or "same")
      • LSTM层:tf.keras.layers.LSTM()
    • Model.compile( optimizer = 优化器, loss = 损失函数, metrics = [“准确率”])


      • optimizer 可以是字符串形式给出的优化器名字,也可以是函数形式,使用函数 形式可以设置学习率、动量和超参数。

      • 可选项包括:

        1. ‘sgd’or tf.optimizers.SGD( lr=学习率, decay=学习率衰减率, momentum=动量参数)
        2. ‘adagrad’or tf.keras.optimizers.Adagrad(lr=学习率, decay=学习率衰减率)
        3. ‘adadelta’or tf.keras.optimizers.Adadelta(lr=学习率, decay=学习率衰减率)
        4. ‘adam’or tf.keras.optimizers.Adam (lr=学习率, decay=学习率衰减率)
      • Loss 可以是字符串形式给出的损失函数的名字,也可以是函数形式。

      • 可选项包括:

        1. ‘mse’or tf.keras.losses.MeanSquaredError()
        2. ‘sparse_categorical_crossentropy or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
        • 损失函数常需要经过 softmax 等函数将输出转化为概率分布的形式。 from_logits 则用来标注该损失函数是否需要转换为概率的形式,取 False 时表 示转化为概率分布,取 True 时表示没有转化为概率分布,直接输出。
      • Metrics 标注网络评测指标。

      • 可选项包括:

        1. ‘accuracy’:y_和y都是数值形式给出的

        如:如 y_=[1] y=[1]

        1. ‘categorical_accuracy’:y_和y都是以独热码或概率分布形式给出

        如:y_=[0, 1, 0], y=[0.256, 0.695, 0.048]

        1. ‘sparse_ categorical_accuracy’:y_是以数值形式给出,y 是以独热码形式 给出。

          如: y_=[1],y=[0.256, 0.695, 0.048]

    • model.fit(训练集的输入特征, 训练集的标签, batch_size=, epochs=, validation_data = (测试集的输入特征,测试集的标签), validataion_split = 从测试集划分多少比例给训练集, validation_freq = 测试的 epoch 间隔次数)


    • model.summary()


      • summary 函数用于打印网络结构和参数统计

    • 用六步法实现鸢尾花数据集分类

    # impor相关模块
    import tensorflow as tf
    from sklearn import datasets
    import numpy as np
    
    # 交代训练集的输入特征x_train和训练集的标签y_train
    x_train = datasets.load_iris().data
    y_train = datasets.load_iris().target
    
    # 测试集的输入特征x_test和测试集标签y_test可以直接给定,也可以在fit中按比例从训练集中划分
    
    #实现了数据集的乱序
    np.random.seed(116)
    np.random.shuffle(x_train)
    np.random.seed(116)
    np.random.shuffle(y_train)
    tf.random.set_seed(116)
    
    #在Sequential()搭建网络结构
    model = tf.keras.models.Sequential([
        tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
    ])
    
    # 在compile中配置训练方法
    model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
                  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
                  metrics=['sparse_categorical_accuracy'])
    
    #在fit()中执行训练过程
    model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
    
    # 打印网络结构和参数统计
    model.summary()
    
    • 结果
  • 相关阅读:
    python3学习之匿名函数
    python3学习之装饰器
    Linux服务器管理神器-IPython
    Linux 安装python3.4
    Linux一些常用操作命令
    Java并发知识分享
    LINUX 学习笔记 账号与群组的管理
    用JAVA写查询一个字符串中是否包含另外一个字符串以及出现的次数
    jQuery性能优化
    jQuery实用工具函数
  • 原文地址:https://www.cnblogs.com/--lzx1--/p/14327354.html
Copyright © 2011-2022 走看看