发新帖

简单的线性回归问题

[复制链接]
287 0

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
代码如下:

def myregression():
        """
        实现线性回归预测
        return: None
        """
        #1、准备好特征和目标值
        x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
        y_true = tf.matmul(x,[[0.7]]) + 0.8

        #2、建立回归模型,1个特征,1个权重
        w = tf.Variable(tf.random_normal([1,1],mean = 0.0,stddev = 1.0),name = 'weight')
        b = tf.Variable(0.0,name='bias')
        y_predict = tf.matmul(x,w) + b

        #3、建立损失函数计算损失------均方误差
       
        loss = tf.reduce_mean(tf.square(y_true-y_predict))

        #4、梯度下降算法优化损失
        train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

        #定义变量初始化op       
        init_op = tf.global_variables_initializer()
       
        #通过会话运行训练过程

        with tf.Session() as sess:
                #初始化变量
                sess.run(init_op)
               
                while True:
                        sess.run(train_op)
                        print("value of x and w is %f %f"%(w.eval(),b.eval()))


import tensorflow as tf
if __name__ == "__main__":
        myregression()

问题:
1、在上下文语句中,运行
       xx = x.eval()会触发什么操作?是获取了x的值,还是重新运行了一遍张量x的赋值操作,返回了一个结果?
2、在sess中运行如下语句
sess.run(init_op)
                xx = x.eval()
                for i in range(100):
                        print(xx[i])
                xx = x.eval()
                for i in range(100):
                        print(xx[i])
                return
为什么两次打印的值不一样

3、当生成训练数据时,使用了如下语句
      x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
      y_true = tf.matmul(x,[[0.7]]) + 0.8
      此时训练正常,能够训练出正常数据

      但是如果改成
      x = tf.random_normal([100,1],mean = 10,stddev = 0.5,name = 'input_data_x')
      y_true = tf.matmul(x,[[0.7]]) + 0.8
     就导致无法训练,最后训练参数很大很大
     为什么?


我知道答案 回答被采纳将会获得10 金币 + 5 金币 已有0人回答
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表