zoukankan      html  css  js  c++  java
  • 学习八

    tensorflow实现线性回归

    import tensorflow as tf
    import os
    
    #自实现一个线性回归预测
    def myregression():
        with tf.variable_scope("data"):#变量作用域,代码更加分明
            #1准备数据 x特征值[100,1] y目标值[100]
            x=tf.random_normal([100,1],mean=1.75,stddev=0.5,name="x_data")
            #矩阵相乘必须是二维的
            y_true=tf.matmul(x,[[0.7]])+0.8
        with tf.variable_scope("model"):
            #建立线性回归模型 1个特征有一个权重 1个偏置 y=w x+b
            #随机给一个权重和偏置的值,然后计算损失,在当前状态下优化
            #tf.Variable()这个函数里面有一个trainable参数为true时指这个变量能跟着梯度下降一起优化,就是说这个变量可以变化,如果为false则不能变化
            weight=tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name="w")
            bias=tf.Variable(0.0,name="b")
            y_predict=tf.matmul(x,weight)+bias
        with tf.variable_scope("loss"):
            #建立损失函数,均方误差
            loss=tf.reduce_mean(tf.square(y_true-y_predict))
    
        with tf.variable_scope("optimizer"):
            #4.梯度下降优化损失 0.1是学习率,学习率这个参数需要不断调整,学习率过大会出现梯度爆炸问题,学习率大梯度会指数爆炸式增加
    
            train_op=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
        #二、添加权重参数,损失值等在tensorboard观察的情况 1收集变量 2.合并变量写入事件文件
        #收集tensor
        tf.summary.scalar("losses",loss)#收集对于损失函数和准确率等单值变量,name为变量名字,tensor为值
        tf.summary.histogram("weights",weight)#收集高维度的变量参数
        #合并变量写入事件文件,定义合并tensor的op
        merged=tf.summary.merge_all()
    
    
    
    
    
    
        #定义一个初始化变量的op
        init_op=tf.global_variables_initializer()
        #定义一个保存模型的op
        saver=tf.train.Saver()
        #通过会话运行程序
        with tf.Session() as sess:
            #初始化变量
            sess.run(init_op)
    
            #打印随机最先初始化的权重和偏置
            print("随机初始化参数权重:%f,偏置为:%f" %(weight.eval(),bias.eval()))
            #建立事件文件
            filewriter = tf.summary.FileWriter("./summary/test", graph=sess.graph)
    
            #加载模型,覆盖模型当中随机定义的参数,从上次训练的参数结果开始
            if os.path.exists("./ckpt/checkpoint"):
                saver.restore(sess,"./ckpt/model")
            # #循环训练,运行优化
            for i in range(200):
              sess.run(train_op)
              # 运行合并的tensor
              summary = sess.run(merged)
              filewriter.add_summary(summary,i)
              print("第%d次参数权重:%f,偏置为:%f" % (i,weight.eval(), bias.eval()))
            saver.save(sess,"./ckpt/model")
        return None
    
    if __name__=="__main__":
           myregression()
  • 相关阅读:
    flutter 日常所记
    flutter 项目打包出错问题
    flutter去除白屏,添加启动图
    flutter快捷键总结
    flutter组件总结
    首次使用flutter
    微信小程序引入坐标反解析
    公众号H5引入微信地图组件的正确姿势
    小程序获取unionid的方法
    对比两个文件夹或者文件的差异
  • 原文地址:https://www.cnblogs.com/zhang12345/p/13073041.html
Copyright © 2011-2022 走看看