柳鲲鹏
发出来的原因,是吾觉得自己已经看明白了。
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()