Tensorflow之keras模型建立與訓練

2021-10-25 08:04:05 字數 1490 閱讀 7659

在 tensorflow 中,推薦使用keras( tf.keras)構建模型。keras 是乙個廣為流行的高階神經網路 api,簡單、快速而不失靈活性,現已得到tensorflow的官方內建和全面支援。

keras有兩個重要的概念:模型(model)和層(layer)。層將各種計算流程和變數進行了封裝(例如基本的全連線層,cnn的卷積層、池化層等),而模型則將各種層進行組織和連線,並封裝成 乙個整體,描述了如何將輸入資料通過各種層以及運算而得到輸出。在需要模型呼叫的時候,使用y_pred =  model(x) 的形式即可。

下面開始用乙個簡單的線性模型y_pred=a*x+b來講解吧。

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

if __name__=="__main__":

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)

loss=tf.reduce_mean(tf.square(y_pred-y))

grads=tape.gradient(loss,model.variables)

print(model.variables)

結果如下所示:

[, ] 

tf.keras.layers.dense(units, activation=none, use_bias=true, kernel_initializer='glorot_uniform', bias_initializer='zeros')

units,第乙個引數,輸出的單元個數

activation,第二個引數是啟用函式

kernel_initializer :卷積核初始化,

bias_initializer :偏差值初始化,

tensorflow學習之softmax使用詳解

softmax 在機器學習和深度學習中有著非常廣泛的應用。尤其在處理多分類 c 2 問題,分類器最後的輸出單元需要softmax 函式進行數值處理。關於softmax 函式的定義如下所示 其中,vi 是分類器類別的輸出。i 表示類別索引,總的類別個數為 c。si 表示的是當前元素的指數與所有元素指數...

tensorflow之模型壓縮

本文 tensorflow的模型在移動端執行時往往需要進行模型壓縮。這主要有於兩方面的原因 tensorflow的模型在訓練的過程中可能為了訓練會新增一些操作和節點,而tensorflow的移動端只專注於推理,這樣在執行時就會產生一些核心不存在的錯誤。所以此時需要通過壓縮來減少一些和輸入及輸出不相關...

Tensorflow之RNN實踐(二)

參考以下這篇文章學習,從上層模組結構到底層 都分析得很清晰 直接從模型構建過程開始,rnn的核心單元是乙個可沿時間序列展開的cell,一般先定義模型中要使用到的cell結構 lstm cell tf.nn rnn cell.basiclstmcell size,forget bias 0.0,sta...