刀刀网
您的当前位置:首页TensorFlow拟合线性函数

TensorFlow拟合线性函数

来源:刀刀网
TensorFlow拟合线性函数

TensorFlow拟合线性函数

简单的TensorFlow图构造

以单个神经元为例

x_data数据为20个随机 [0, 1) 的32位浮点数按照 shape=[20] 组成的张量y_data为 y = 3*x_data + 0.5 也为 shape=[20]

初始化此神经元的 weight 为 [-1, 1) 之间的⼀个随机32位浮点数初始化此神经元的 bias 为 0

误差(Loss)选择为神经元输出结果与y_data的差平⽅平均值

Optimizer概览

Optimizer的选择⼀般由data的size及shape决定

class tf.train.GradientDescentOptimizer

随机梯度下降优化器,SGD,stochastic gradient descent,最普通,最慢,相对⽐较准确Learing Rate根据Cost选择

class tf.train.MomentumOptimizer

动量法优化器,普遍,⽐GradientDescent快的多,开始可能偏差较⼤,后来纠正很快,随时间迁移class tf.train.AdamOptimizer 普遍class tf.train.AdadeltaOptimizer class tf.train.AdagradOptimizerclass tf.train.FtrlOptimizer

class tf.train.RMSPropOptimizer AlphaGo使⽤

Gradient Descent Optimizer

梯度下降优化器 learning rate 0.75三个数值为weight bias loss200步之后 3. 0.5 0.0 完美

其他Optimizer

todo: 改变 learing rate 及其他参数对其他Optimizer进⾏测试

Code

import tensorflow as tf

# to fitting an unary linear function# creat data

x_data = tf.random_uniform([20], 0, 1)y_data = x_data*3 + 0.5

# creat tensorflow stuctrue start

Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))biases = tf.Variable(tf.zeros([1]))output = Weights*x_data + biases

loss = tf.reduce_mean(tf.square(output - y_data))optimizer = tf.train.AdamOptimizer(0.75)train = optimizer.minimize(loss)# creat tensorflow stuctrue end

# run tensorflow

init = tf.initialize_all_variables()with tf.Session() as sess: sess.run(init)

for i in range(1, 201): sess.run(train) if i%20 == 0:

#print(\"x_data:\\n\

print(i, sess.run(Weights), sess.run(biases), sess.run(loss))

因篇幅问题不能全部显示,请点此查看更多更全内容