天天看點

TensorFlow/Python的一個範例代碼及閱讀說明

柳鲲鵬

發出來的原因,是吾覺得自己已經看明白了。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
 
# 所有的人工智能程式,都是4個步驟:
# 資料。
# 模型建立。
# 訓練。
# 測試與應用。
 
# 10個資料, 一維數組
x_data = np.random.randn(10)
# 10個資料
y_data = x_data * 0.3 + 0.15
 
# 兩個變量, float32
weight  = tf.Variable(0.5)
print(weight, "END")
bias    = tf.Variable(0.0)
print(bias, "END")
# 因為 weight/bias是變量,是以y_model實際上是操作。應該是Add操作
y_model = weight * x_data + bias
print(y_model, "END")
 
# Pow操作的損失函數,也就是與期望相差的情況。是以叫損失函數可能意思不準确,叫衡量函數?
loss = tf.pow((y_model - y_data), 2)
print("loss=", loss, "END")
 
# 梯度下降訓練法。可以看出,這裡是取最小的loss。
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
print("train_op=", train_op, "END")
 
# 這兩句是必然寫法。
sess = tf.Session()
print("sess=", sess, "END")
init = tf.initialize_all_variables()
print("init=", init, "END")
 
# 初始化
sess.run(init)
 
# 訓練200次,每次都輸出兩個變量的變化。
for _ in range(200):
    sess.run(train_op)
    print(weight.eval(sess), bias.eval(sess))
 
# 畫點
plt.plot(x_data, y_data, 'ro', label='Original data')
# 畫線?
plt.plot(x_data, sess.run(weight) * x_data + sess.run(bias), label='Fitted line')
plt.legend()
plt.show()