參考:
看看就明白了
from __future__ import absolute_import, division, print_function
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 學習率
learning_rate =
0.01
# 迭代次數
training_steps =
1000
display_step =
50# 訓練資料
x = np.array(
[3.3
,4.4
,5.5
,6.71
,6.93
,4.168
,9.779
,6.182
,7.59
,2.167
,7.042
,10.791
,5.313
,7.997
,5.654
,9.27
,3.1])
y = np.array(
[1.7
,2.76
,2.09
,3.19
,1.694
,1.573
,3.366
,2.596
,2.53
,1.221
,2.827
,3.465
,1.65
,2.904
,2.42
,2.94
,1.3])
# 取出陣列x的長度
n_samples = x.shape[0]
# 隨機初始化權重,偏置
w = tf.variable(np.random.randn(
), name=
"weight"
)b = tf.variable(np.random.randn(
), name=
"bias"
)# 線性回歸(wx+b)
deflinear_regression
(x):
return w * x + b
# 均方差
defmean_square
(y_pred,y_true)
:return tf.reduce_sum(tf.
pow(y_pred - y_true,2)
)/(2
* n_samples)
# 隨機梯度下降優化器
optimizer = tf.optimizers.sgd(learning_rate)
# 優化過程
defrun_optimization()
:# 將計算封裝在gradienttape中以實現自動微分
with tf.gradienttape(
)as g:
pred = linear_regression(x)
loss = mean_square(pred, y)
# 計算梯度
# print("loss is ", loss)
gradients = g.gradient(loss,
[w, b]
)# 按gradients更新 w 和 b
zip(gradients,
[w, b]))
# 針對給定訓練步驟數開始訓練
for step in
range(1
, training_steps +1)
:# 執行優化以更新w和b值
run_optimization(
)if step % display_step ==0:
pred = linear_regression(x)
loss = mean_square(pred, y)
print
("step: %i, loss: %f, w: %f, b: %f"
%(step, loss, w.numpy(
), b.numpy())
)# 繪製圖
plt.plot(x, y,
'ro'
, label=
'original data'
)plt.plot(x, np.array(w * x + b)
, label=
'fitted line'
)plt.legend(
)plt.show(
)
Tensorflow2 0簡單應用 一
我是初學者 參考 1.匯入tf.keras tensorflow2推薦使用keras構建網路,常見的神經網路都包含在keras.layer中 最新的tf.keras的版本可能和keras不同 import tensorflow as tf from tensorflow.keras import l...
Tensorflow2 0之卷積層實現
在 tensorflow 中,通過tf.nn.conv2d 函式可以方便地實現2d 卷積運算。tf.nn.conv2d基於輸入?和卷積核?進行卷積運算,得到輸出?其中?表示輸入通道數,表示卷積核的數量,也是輸出特徵圖的通道數。例如 in 1 x tf.random.normal 2 5,5 3 模擬...
tensorflow2 0視訊記憶體設定
遇到乙個問題 新買顯示卡視訊記憶體8g但是tensorflow執行的時候介面顯示只有約6.3g的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...