日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【tensorflow】全连接层函数tf.layers.dense()原理

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【tensorflow】全连接层函数tf.layers.dense()原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TensorFlow全連接層函數tf.layers.dense()原理 - jian shu https://www.jianshu.com/p/3855908b4c29

最近在用TensorFlow實現CNN網絡時用到了全連接層,在網上看了很多有關全連接層實現的代碼,發現相當一部分人都還是傾向于自己構造權重矩陣W和偏移矩陣b,利用矩陣乘法實現全連接層。
而TensorFlow中封裝了全連接層函數tf.layers.dense(),但是官方文檔中并沒有解釋其詳細原理。網上有部分博客對此提及,但也少有涉及到內部實現原理的。于是今天自己動手做了個對比試驗,來探究一下tf.layers.dense()函數的詳細原理。

先貼結論:tf.layers.dense( input, units=k )會在內部自動生成一個權矩陣kernel偏移項bias
各變量具體尺寸如下:對于尺寸為**[m, n]的二維張量input輸入時,
tf.layers.dense()會生成:
尺寸為
[n, k]權矩陣kernel
尺寸為
[m, k]**的 偏移項bias
內部的 “計算過程”y = input * kernel + bias
輸出值y 的維度為 [m, k]

以下是實驗代碼

import tensorflow as tf# 1. 調用tf.layers.dense計算 input = tf.reshape(tf.constant([[1., 2.], [2., 3.]]), shape=[4, 1]) b1 = tf.layers.dense(input,units=2,kernel_initializer=tf.constant_initializer(value=2), # shape: [1,2]bias_initializer=tf.constant_initializer(value=1)) # shape: [4,2]# 2. 采用矩陣相乘的方式計算 kernel = tf.reshape(tf.constant([2., 2.]), shape=[1, 2]) bias = tf.reshape(tf.constant([1., 1., 1., 1., 1., 1., 1., 1.]), shape=[4, 2]) b2 = tf.add(tf.matmul(input, kernel), bias)with tf.Session()as sess:sess.run(tf.global_variables_initializer())print(sess.run(b1))print(sess.run(b2))

計算的結果如圖所示,兩種方法得到的結果相同。

——————————————————————
以上為轉載他人博客
——————————————————————

tf.layers.dense()參數及其含義:

tf.layers.dense用于添加一個全連接層
函數如下:

tf.layers.dense(inputs, #層的輸入units, #該層的輸出維度activation=None, #激活函數use_bias=True, kernel_initializer=None, # 卷積核的初始化器bias_initializer=tf.zeros_initializer(), # 偏置項的初始化器kernel_regularizer=None, # 卷積核的正則化bias_regularizer=None, # 偏置項的正則化activity_regularizer=None, kernel_constraint=None,bias_constraint=None,trainable=True,name=None, # 層的名字reuse=None # 是否重復使用參數 )

參數的詳細解釋見如下網址:
TensorFlow函數:tf.layers.Dense_w3cschool https://www.w3cschool.cn/tensorflow_python/tensorflow_python-rn6a2tps.html

參數:

  • units:整數或長整數,輸出空間的維數.
  • activation:激活功能(可調用),將其設置為“None”以保持線性激活.
  • use_bias:Boolean,表示該層是否使用偏差.
  • kernel_initializer:權重矩陣的初始化函數;如果為None(默認),則使用tf.get_variable使用的默認初始化程序初始化權重.
  • bias_initializer:偏置的初始化函數.
  • kernel_regularizer:權重矩陣的正則化函數.
  • bias_regularizer:正規函數的偏差.
  • activity_regularizer:輸出的正則化函數.
  • kernel_constraint:由Optimizer更新后應用于內核的可選投影函數(例如,用于實現層權重的范數約束或值約束).該函數必須將未投影的變量作為輸入,并且必須返回投影變量(必須具有相同的形狀).在進行異步分布式訓練時,使用約束是不安全的.
  • bias_constraint:由Optimizer更新后應用于偏置的可選投影函數.
  • trainable:Boolean,如果為True,還將變量添加到圖集合GraphKeys.TRAINABLE_VARIABLES中(請參閱參考資料tf.Variable).
  • name:String,圖層的名稱;具有相同名稱的圖層將共享權重,但為了避免錯誤,在這種情況下,我們需要reuse=True.
  • reuse:Boolean,是否以同一名稱重用前一層的權重.

總結

以上是生活随笔為你收集整理的【tensorflow】全连接层函数tf.layers.dense()原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。