# 使用线性回归预测肥胖 # 1、导入相应的包 import tensorflow as tf # 2、定义权重和偏置 W = tf.Variable(tf.zeros([2,1]),name="weights") b = tf.Variable(0.,name="bias") # 3、定义拟合关系,这里为线性函数 def inference(X): return tf.matmul(X,W) + b # 4、定义损失函数 def loss(X,Y): # 获取预测值,并将其转化为一个列向量 Y_predicted = tf.transpose(inference(X),name="get_Y_predicted") # 对两个向量对应的值求均方误差并累计求和计算损失返回 return tf.reduce_sum(tf.squared_difference(Y,Y_predicted)) # 5、定义数据源 # Data from http://people.sc.fsu.edu/~jburkardt/datasets/regression/x09.txt def inputs(): weight_age = [[84, 46], [73, 20], [65, 52], [70, 30], [76, 57], [69, 25], [63, 28], [72, 36], [79, 57], [75, 44], [27, 24], [89, 31], [65, 52], [57, 23], [59, 60], [69, 48], [60, 34], [79, 51], [75, 50], [82, 34], [59, 46], [67, 23], [85, 37], [55, 40], [63, 30]] blood_fat_content = [354, 190, 405, 263, 451, 302, 288, 385, 402, 365, 209, 290, 346, 254, 395, 434, 220, 374, 308, 220, 311, 181, 274, 303, 244] # 将数值转化为浮点类型并返回 return tf.to_float(weight_age),tf.to_float(blood_fat_content) # 6、定义训练参数及训练方法 def train(total_loss): # 定义学习率 learning_rate = 0.000005 return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss) # 7、评估验证 def evaluate(sess, X, Y): print(sess.run(inference([[50., 20.]]))) # ~ 303 print(sess.run(inference([[50., 70.]]))) # ~ 256 print(sess.run(inference([[90., 20.]]))) # ~ 303 print(sess.run(inference([[90., 70.]]))) # ~ 256 # Launch the graph in a session, setup boilerplate with tf.Session() as sess: # 初始化所有变量 tf.global_variables_initializer().run() # 获得输入特征与标签值向量 X, Y = inputs() # 计算损失 total_loss = loss(X, Y) # 执行训练 train_op = train(total_loss) # 创建一个协调器,管理线程 coord = tf.train.Coordinator() # 启动QueueRunners, 此时文件名队列已经进队。 threads = tf.train.start_queue_runners(sess=sess, coord=coord) # 定义循环次数 training_steps = 100000 try: for step in range(training_steps): sess.run([train_op]) if step % 1000 == 0: print("Epoch:", step, " loss: ", sess.run(total_loss)) print("Final model W=", sess.run(W), "b=", sess.run(b)) except Exception as e: # 将异常抛给coordinator,通知线程停止 coord.request_stop(e) finally: # 模型评估 evaluate(sess, X, Y) # 请求该线程停止 coord.request_stop() # 等待被指定的线程终止 coord.join(threads) sess.close()
【06】tensorflow使用线性回归预测肥胖
猜你喜欢
转载自blog.csdn.net/yeler082/article/details/80023026
今日推荐
周排行