您的位置:首页 > 编程语言

TensorFlow 机器学实战指南示例代码之 TensorFlow 实现反向传播(一)

2018-02-07 14:22 459 查看
"""
TensorFlow 通过优化函数来实现更新变量和最小化损失函数来实现误差的反向传播
一旦声明优化函数后,TensorFlow 将通过它在所有的计算图中解决反向传播项
"""
# 该程序用于实现回归算法的反向传播

import os
import numpy as np
import tensorflow as tf

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

s = tf.Session()

# 生成数据,创建占位符和变量 A

x_vals = np.random.normal(1, 0.1, 100)  # 创建均值为 1、标准差为 0.1 的正态分布
y_vals = np.repeat(10., 100)
x_data = tf.placeholder(shape=[1], dtype=tf.float32)
y_target = tf.placeholder(shape=[1], dtype=tf.float32)
A = tf.Variable(tf.random_normal(shape=[1]))

# 增加乘法操作
my_output = tf.multiply(x_data, A)

# 增加 L2 正则损失函数
loss = tf.square(my_output - y_target)

# 运行之前需要初始化变量
init = tf.global_variables_initializer()
s.run(init)

# 声明变量的优化器
my_opt = tf.train.GradientDescentOptimizer(learning_rate=0.02)
train_step = my_opt.minimize(loss)

# 训练算法,每 25 次迭代打印返回结果
for i in range(100):
rand_index = np.random.choice(100)
rand_x = [x_vals[rand_index]]
rand_y = [y_vals[rand_index]]
s.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})
if (i + 1) % 5 == 0:
print('Step #' + str(i+1) + ' A = ' + str(s.run(A)))
print('Loss = ' + str(s.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TensorFlow 反向传播