zoukankan      html  css  js  c++  java
  • 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.AdagradOptimizer
    class tf.train.FtrlOptimizer
    class tf.train.RMSPropOptimizer AlphaGo使用

    Gradient Descent Optimizer

    梯度下降优化器 learning rate 0.75
    三个数值为weight bias loss
    200步之后 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:
    ", x_data,"
    y_data:
    ", y_data)
                print(i, sess.run(Weights), sess.run(biases), sess.run(loss))
  • 相关阅读:
    LeetCode-1370 Increasing Decreasing String
    LeetCode-1221 Split a String in Balanced Strings
    Neo4j 实战(三)-- Neo4j Loads CSV Files
    Neo4j 实战(二)-- neo4j 基础语句
    Java HashMap 学习笔记
    Markdown 入门笔记
    《知识图谱方法、实践与应用》读书笔记(第一遍)
    Java 数组复制
    LeetCode-496 Next Greater Element I Solution(with Java)
    linux 同步IO: sync、fsync与fdatasync
  • 原文地址:https://www.cnblogs.com/liyuquan/p/7435633.html
Copyright © 2011-2022 走看看