<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2032字,需瀏覽 5分鐘

           ·

          2021-02-14 23:03

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



          Keras 模型以類的形式呈現(xiàn),我們可以通過繼承?tf.keras.layers.Layer?這個 Python 類來定義自己的模型。在繼承類中,我們需要重寫?__init__()?(構造函數(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 方法中對這個層進行調(diào)用,實現(xiàn)了線性變換的計算。



          02

          全連接層


          全連接層?(Fully-connected Layer,tf.keras.layers.Dense?)是 Keras 中最基礎和常用的層之一,對輸入矩陣??進行??的線性變換 + 激活函數(shù)操作。如果不指定激活函數(shù),即是純粹的線性變換?。具體而言,給定輸入張量 input =?[batch_size, input_dim]?,該層對輸入張量首先進行 tf.matmul(input, kernel)?+ bias 的線性變換( kernel 和 bias 是層中可訓練的變量),然后對線性變換后張量的每個元素通過激活函數(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:權重矩陣 kernel 和偏置向量 bias 兩個變量的初始化器




          ?END

          深度學習入門筆記

          微信號:sdxx_rmbj

          日常更新學習筆記、論文簡述

          瀏覽 83
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂中文字幕在线观看 | 无码中文字幕在线视频 | 一级片观看| 中文字幕+乱码+中文乱码视频在线观看 | 四虎在线无码免费精品 |