TensorFlow 0.12.0 最简单的训练算法Demo
# tf 0.12.0
import numpy as np
import tensorflow as tf
import random
# 版本
print(tf.__version__, tf.test.is_gpu_available())
# 会话
sess = tf.Session()
# 超参
MAX_EPOCH = 501
PRINT_INTERVAL = 50
def set_seed(manual_seed):
random.seed(manual_seed)
np.random.seed(manual_seed)
tf.set_random_seed(manual_seed)
set_seed(0)
# 数据
x_data = np.random.rand(100).astype(np.float32) # data
y_data = x_data * 0.1 + 0.3 # label
# 模型
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) # 范围-1到1
biases = tf.Variable(tf.zeros([1]))
y = tf.add(tf.mul(Weights, x_data), biases) # 计算图,前向传播
# 模型权值初始化
init = tf.initialize_all_variables() # 权值初始化策略,静态
sess.run(init) # 激活初始化函数 extremely crucial!
# 优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.5)
# 目标函数
loss = tf.reduce_mean(tf.square(y-y_data)) # 误差,损失,代价
# 反向传播,梯度下降-权值更新
train = optimizer.minimize(loss)
# 迭代训练
for step in range(MAX_EPOCH):
sess.run(train) # 前向传播,计算损失,反向传播,梯度下降-权值更新
# 打印训练信息
if step % PRINT_INTERVAL == 0:
print(step, sess.run(Weights), sess.run(biases))
环境:
python == 3.5.5
tensorflow == 0.12.0
Many thanks to Teacher MorvanZhou and TingsongYu!