线性回归
实现线性回归用到的API
步骤分析
代码:
#用梯度下降实现线性回归 def Linear_regression(): ''' 自实现一个线性回归 :return: ''' #增加命名空间 with tf.variable_scope("prepare_data"): # 1 准备数据 x = tf.random_normal(shape=[100,1],name="feature") y_true = tf.matmul(x,[[0.8]])+0.7 with tf.variable_scope("creater_model"): # 2 构造模型 #定义模型参数 weights = tf.Variable(initial_value=tf.random_normal(shape=[1,1]),trainable=True,name="Weights") bias = tf.Variable(initial_value=tf.random_normal(shape=[1,1]),trainable=True,name="Bias") y_predict = tf.matmul(x,weights) + bias with tf.variable_scope("loss_function"): #构造损失函数 error = tf.reduce_mean(tf.square(y_predict - y_true)) with tf.variable_scope("optimizer"): # 4 优化损失 optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error) #显示的初始化变量 init = tf.global_variables_initializer() #开启会话 with tf.Session() as sess: #初始化变量 sess.run(init) #1创建事件文件 file_writer = tf.summary.FileWriter("linear",graph=sess.graph) #2收集变量 #标量 tf.summary.scalar("error",error) #高维变量 tf.summary.histogram("weights",weights) tf.summary.histogram("bias",bias) #3合并变量 merged = tf.summary.merge_all() #模型的保存,创建Save对象 saver = tf.train.Saver() #查看初始化模型参数之后的值 print("训练前权重%f,偏置%f,损失%f" %(weights.eval(),bias.eval(),error.eval())) #开始训练 for i in range(1000): sess.run(optimizer) print("训练后权重%f,偏置%f,损失%f" % (weights.eval(), bias.eval(), error.eval())) # #运行合并变量的操作 # summary = sess.run(merged) # #将每次迭代后的变量写入事件文件 # file_writer.add_summary(summary,i) # #保存模型 # if i%10==0: # saver.save(sess,"model/my_linear.ckpt") #加载模型 # if os.path.exists("model/checkpoint"): # saver.restore(sess,"model/my_linear.ckpt") #print("训练后权重%f,偏置%f,损失%f" % (weights.eval(), bias.eval(), error.eval())) return None
输出: