tf的張量改變可以使用python的方式
x=tf.ones([6,6])
x=x+3
print(x)
tf.tensor(然而機器學習中間需要變化的狀態(每個引數朝損失變小的方向改變,所以tensorflow也要內建有狀態的操作,這就是variables,它可以表示模型中的引數,而且方便高效。[[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)
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 啟用函式
常用啟用函式及對應特點 神經網路結構的輸出為所有輸入的加權和,這導致整個神經網路是乙個線性模型。而線性模型不能解決異或問題,且面對多分類問題,也顯得束手無策。所以為了解決非線性的分類或回歸問題,啟用函式必須是非線性函式。神經網路中啟用函式的主要作用是提供網路的非線性建模能力。這是因為反向傳播演算法就...