tensorflow2 0的簡單訓練(1)

2021-09-28 23:51:01 字數 3260 閱讀 4173

tf的張量改變可以使用python的方式

x=tf.ones([6,6])

x=x+3

print(x)

tf.tensor(

[[4. 4. 4. 4. 4. 4.]

[4. 4. 4. 4. 4. 4.]

[4. 4. 4. 4. 4. 4.]

[4. 4. 4. 4. 4. 4.]

[4. 4. 4. 4. 4. 4.]

[4. 4. 4. 4. 4. 4.]], shape=(6, 6), dtype=float32)

然而機器學習中間需要變化的狀態(每個引數朝損失變小的方向改變,所以tensorflow也要內建有狀態的操作,這就是variables,它可以表示模型中的引數,而且方便高效。

variables是乙個存在值的物件,當其被使用是,它被隱式地被從儲存中讀取,而當有諸如tf.assign_sub, tf.scatter_update這樣的操作時,得到的新值會儲存到原物件中。

v=tf.variable(2)

v.assign(6)

print(v)

v.assign_add(tf.square(3))

print(v)

構建乙個線型函式進行簡單**

class modeltest(object):

def __init__(self):

self.w=tf.variable(5.0)

self.b=tf.variable(1.0)

def __call__(self,x):

return self.w*x+self.b

model=modeltest()

print(model(3))

tf.tensor(16.0, shape=(), dtype=float32)
這裡當乙個型別實現了特殊方法__call__,該類的例項就變成了可呼叫的型別, 物件名() 等價於 物件名.__call__(),有時候可以簡化物件的呼叫,讓物件變成可呼叫的物件, 實現__call__即可.

定義損失函式,生成資料

生成訓練函式

def train(model,inputs,outputs,learning_rate):

with tf.gradienttape() as t:

current_loss=losstest(model(inputs),outputs)

dw,db=t.gradient(current_loss,[model.w,model.b])

model.w.assign_sub(dw*learning_rate)

model.b.assign_sub(db*learning_rate)

dw db為求道

不斷擬合訓練

學習率可以自行改變捉摸

Tensorflow2 0簡單應用 一

我是初學者 參考 1.匯入tf.keras tensorflow2推薦使用keras構建網路,常見的神經網路都包含在keras.layer中 最新的tf.keras的版本可能和keras不同 import tensorflow as tf from tensorflow.keras import l...

tensorflow2 0視訊記憶體設定

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

Tensorflow2 0 啟用函式

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