以单个神经元为例
x_data数据为20个随机 [0, 1) 的32位浮点数按照 shape=[20] 组成的张量
y_data为 y = 3*x_data + 0.5 也为 shape=[20]dom
初始化此神经元的 weight 为 [-1, 1) 之间的一个随机32位浮点数
初始化此神经元的 bias 为 0函数
偏差(Loss)选择为神经元输出结果与y_data的差平方平均值测试
Optimizer的选择通常由data的size及shape决定优化
class tf.train.GradientDescentOptimizer
随机梯度降低优化器,SGD,stochastic gradient descent,最普通,最慢,相对比较准确
Learing Rate根据Cost选择code
class tf.train.MomentumOptimizer
动量法优化器,广泛,比GradientDescent快的多,开始可能误差较大,后来纠正很快,随时间迁移orm
class tf.train.AdamOptimizer 广泛
class tf.train.AdadeltaOptimizer
class tf.train.AdagradOptimizer
class tf.train.FtrlOptimizer
class tf.train.RMSPropOptimizer AlphaGo使用it
梯度降低优化器 learning rate 0.75
三个数值为weight bias loss
200步以后 3. 0.5 0.0 完美io
todo: 改变 learing rate 及其余参数对其余Optimizer进行测试ast
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", x_data,"\ny_data:\n", y_data) print(i, sess.run(Weights), sess.run(biases), sess.run(loss))