1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【TensorFlow】筆記:基礎(chǔ)知識-使用keras建立線性回歸

        共 2032字,需瀏覽 5分鐘

         ·

        2021-02-14 23:03

        點擊上方“公眾號”可訂閱哦!



        Keras 模型以類的形式呈現(xiàn),我們可以通過繼承?tf.keras.layers.Layer?這個 Python 類來定義自己的模型。在繼承類中,我們需要重寫?__init__()?(構(gòu)造函數(shù),初始化)和?call(input)?(模型調(diào)用)兩個方法,同時也可以根據(jù)需要增加自定義的方法。



        01

        keras模型類定義示意



        繼承?tf.keras.Model?后,我們同時可以使用父類的若干方法和屬性,例如在實例化類?model?=?Model()?后,可以通過?model.variables?這一屬性直接獲得模型中的所有變量,免去我們一個個顯式指定變量的麻煩。


        使用模型類編寫線性模型

        import tensorflow as tf
        X = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])y = tf.constant([[10.0], [20.0]])

        class Linear(tf.keras.Model): def __init__(self): super().__init__() self.dense = tf.keras.layers.Dense( units=1, activation=None, kernel_initializer=tf.zeros_initializer(), bias_initializer=tf.zeros_initializer() )
        def call(self, input): output = self.dense(input) return output


        實例化模型:

        model = Linear()optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)for i in range(100):    with tf.GradientTape() as tape:        y_pred = model(X)      # 調(diào)用模型 y_pred = model(X) 而不是顯式寫出 y_pred = a * X + b        loss = tf.reduce_mean(tf.square(y_pred - y))    grads = tape.gradient(loss, model.variables)    # 使用 model.variables 這一屬性直接獲得模型中的所有變量    optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))print(model.variables)


        這里,我們沒有顯式地聲明?a?和?b?兩個變量并寫出?y_pred?=?a?*?X?+?b?這一線性變換,而是建立了一個繼承了?tf.keras.Model?的模型類?Linear?。這個類在初始化部分實例化了一個?全連接層(?tf.keras.layers.Dense?),并在 call 方法中對這個層進(jìn)行調(diào)用,實現(xiàn)了線性變換的計算。



        02

        全連接層


        全連接層?(Fully-connected Layer,tf.keras.layers.Dense?)是 Keras 中最基礎(chǔ)和常用的層之一,對輸入矩陣??進(jìn)行??的線性變換 + 激活函數(shù)操作。如果不指定激活函數(shù),即是純粹的線性變換?。具體而言,給定輸入張量 input =?[batch_size, input_dim]?,該層對輸入張量首先進(jìn)行 tf.matmul(input, kernel)?+ bias 的線性變換( kernel 和 bias 是層中可訓(xùn)練的變量),然后對線性變換后張量的每個元素通過激活函數(shù) activation ,從而輸出形狀為?[batch_size, units]?的二維張量。


        units:輸出張量的維度

        activation:激活函數(shù),常用激活函數(shù)tf.nn.relu 、 tf.nn.tanh 和 tf.nn.sigmoid

        use_bias:是否加入偏置向量bias

        kernel_initializer 、 bias_initializer:權(quán)重矩陣 kernel 和偏置向量 bias 兩個變量的初始化器




        ?END

        深度學(xué)習(xí)入門筆記

        微信號:sdxx_rmbj

        日常更新學(xué)習(xí)筆記、論文簡述

        瀏覽 83
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一级黄色大片在线观看 | 免费羞羞视频无遮拦 | 国产99久久久 | 国产主播精品 | 青青青草在线视频 | 欧美性爱天天看 | 成人在线免费观看网站 | 亚洲v无码蜜桃 | 动漫黄网站视频免费 | 中文字幕精品无 |