1. Pass
2. Code:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
def create_data():
"""创建数据,供自测学习使用"""
num_points = 1000
vectors_set = []
for item in range(num_points):
x = np.random.normal(0.00, 0.55)
y = 0.1 * x + 0.3 + np.random.normal(0.00, 0.03)
vectors_set.append([x, y])
return vectors_set
def preprocessing(data):
"""源数据中提取 x,y 数据"""
x_data = [item[0] for item in data]
y_data = [item[1] for item in data]
return (x_data, y_data)
def model_liner(x_data, y_data):
# Prepare param(weight,bias)
w = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='weight')
b = tf.Variable(tf.zeros([1]), name='bias')
# Decision fun(Y=W*X.T+b)
y = w * x_data + b
# Loss fun(loss=tf.reduce_mean(tf.square(y-y_data)))
loss = tf.reduce_mean(tf.square(y - y_data), name='loss')
# Optimizer algorithm(GradientDescentOptimizer)
# TODO learning_rate 作为配置文件中 变动参数,依据训练结果来进行调整
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.3)
# Create Training fun(train = optimizer.minimize(loss,name='train'))
train = optimizer.minimize(loss, name='train')
epoch = 20
'''开启训练通道'''
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print('w=', sess.run(w), '\tb=', sess.run(b), '\tloss:', sess.run(loss)) # TODO test
for item in range(epoch):
sess.run(train)
print('w=', sess.run(w), '\tb=', sess.run(b), '\tloss:', sess.run(loss)) # TODO test
w, b = sess.run(w), sess.run(b)
sess.close()
return (w, b)
def show_img(x_data, y_data, w, b):
"""展示 原始数据,拟合成的直线"""
plt.scatter(x_data, y_data, c='r')
plt.plot(x_data, w * x_data + b, c='b')
plt.show()
def process():
data = create_data()
x_data, y_data = preprocessing(data)
w, b = model_liner(x_data, y_data)
print('\n', w, b, '\n')
show_img(x_data, y_data, w, b)
if __name__ == '__main__':
process()
3. 代码更新...
4. 备注