Tensorflow 2 0 搭建神經網路(區域性)

2022-07-05 23:21:09 字數 1648 閱讀 2126

前向傳播

tensorflow.keras 搭建網路時,內部的網路可以直接完成所有層的前向計算。全連線dense() 層,最後一層的神經元的個數需要和最後一層線性函式 w x + b 的維度對應上,中間的其他層的神經元的個數可以任意指定,只要損失函式能達到較優。

# 匯入常用網路層 layers

from tensorflow.keras import layers,sequential

# 隱藏層 1

fc1 = layers.dense(256, activation=tf.nn.relu)

# 隱藏層 2

fc2 = layers.dense(128, activation=tf.nn.relu)

# 隱藏層 3

fc3 = layers.dense(64, activation=tf.nn.relu)

# 輸出層

fc4 = layers.dense(10, activation=none)

x = tf.random.normal([4,28*28])

# 通過隱藏層 1 得到輸出

h1 = fc1(x)

# 通過隱藏層 2 得到輸出

h2 = fc2(h1)

# 通過隱藏層 3 得到輸出

h3 = fc3(h2)

# 通過輸出層得到網路輸出

h4 = fc4(h3)

# 匯入 sequential 容器

from tensorflow.keras import layers,sequential

# 通過 sequential 容器封裝為乙個網路類

model = sequential([

layers.dense(256, activation=tf.nn.relu) , # 建立隱藏層 1

layers.dense(128, activation=tf.nn.relu) , # 建立隱藏層 2

layers.dense(64, activation=tf.nn.relu) , # 建立隱藏層 3

layers.dense(10, activation=none) , # 建立輸出層

])

out = model(x) # 前向計算得到輸出

梯度計算

with tf.gradienttape() as tape: # 梯度記錄器

# x: [b, 28*28]

# 隱藏層 1 前向計算, [b, 28*28] => [b, 256]

h1 = x@w1 + tf.broadcast_to(b1, [x.shape[0], 256])

h1 = tf.nn.relu(h1)

# 隱藏層 2 前向計算, [b, 256] => [b, 128]

h2 = h1@w2 + b2

h2 = tf.nn.relu(h2)

# 隱藏層 3 前向計算, [b, 128] => [b, 64]

h3 = h2@w3 + b3

h3 = tf.nn.relu(h3)

# 輸出層前向計算, [b, 64] => [b, 10]

h4 = h3@w4 + b4

tensorflow2 0視訊記憶體設定

遇到乙個問題 新買顯示卡視訊記憶體8g但是tensorflow執行的時候介面顯示只有約6.3g的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...

Tensorflow2 0 啟用函式

常用啟用函式及對應特點 神經網路結構的輸出為所有輸入的加權和,這導致整個神經網路是乙個線性模型。而線性模型不能解決異或問題,且面對多分類問題,也顯得束手無策。所以為了解決非線性的分類或回歸問題,啟用函式必須是非線性函式。神經網路中啟用函式的主要作用是提供網路的非線性建模能力。這是因為反向傳播演算法就...

初步了解TensorFlow2 0

為什麼要學習tensorflow?深度學習能夠更好地抽取資料中的規律,從而給公司帶來更大的價值 tensorflow是強大且靈活的開源框架 使用廣泛 2.0更加強大 易用 成熟 tensorflow是什麼?是google的開源軟體庫 採用資料流圖,用於數值計算 支援多平台 gpu cpu 移動裝置 ...