tensorflow拟合随机生成的三维数据【学习笔记】
平台信息:
PC:ubuntu18.04、i5、anaconda2、cuda9.0、cudnn7.0.5、tensorflow1.10、GTX1060
作者:庄泽彬(欢迎转载,请注明作者)
说明:感谢tensorflow社区,本文是在社区的学习笔记,生成随机的三维数据,之后用平面去拟合。
相关代码:
1 #!/usr/bin/env python2 2 # -*- coding: utf-8 -*- 3 """ 4 Created on Thu Oct 11 19:54:15 2018 5 6 @author: zhuang 7 """ 8 9 import tensorflow as tf 10 import numpy as np 11 12 #生成随机数 13 x_data = np.float32(np.random.rand(2,100)) 14 y_data = np.dot([0.100,0.200],x_data) + 0.300 15 16 17 # 初始化参数 18 b = tf.Variable(tf.zeros([1])) 19 # w为1x2的矩阵,在-1.0到1.0之间均匀分布 20 w = tf.Variable(tf.random_uniform([1,2],-1.0,1.0)) 21 y = tf.matmul(w,x_data) + b 22 23 # 使用最小化方差进行梯度下降,来不断更新参数,学习率设置为0.5 24 loss = tf.reduce_mean(tf.square(y-y_data)) 25 optimizer = tf.train.GradientDescentOptimizer(0.5) 26 train = optimizer.minimize(loss) 27 28 #init = tf.initialize_all_variables() 29 #新版本的tensorflow使用下面的接口,老版本使用上面的接口 30 init = tf.global_variables_initializer() 31 32 sess = tf.Session() 33 sess.run(init) 34 35 #进行拟合找到适合的参数 36 for step in xrange(0,201): 37 sess.run(train) 38 if (step) % 20 == 0: 39 print step,sess.run(w),sess.run(b) 40
实验结果:
1 runfile('/home/zhuang/project/1-AI/My_AI_Study_Project/3-tensorflow/005-test.py', wdir='/home/zhuang/project/1-AI/My_AI_Study_Project/3-tensorflow') 2 0 [[0.39894426 0.3333286 ]] [0.14586714] 3 20 [[0.16806586 0.26403958]] [0.22699882] 4 40 [[0.12101775 0.22725435]] [0.27309927] 5 60 [[0.10728491 0.21063562]] [0.28998315] 6 80 [[0.10265137 0.20403926]] [0.2962562] 7 100 [[0.10098286 0.20152006]] [0.29859895] 8 120 [[0.10036676 0.20057023]] [0.29947543] 9 140 [[0.10013718 0.20021366]] [0.29980358] 10 160 [[0.10005137 0.20008004]] [0.29992643] 11 180 [[0.10001925 0.20002998]] [0.29997244] 12 200 [[0.10000721 0.20001122]] [0.29998967]
我们的目标方程y_data = np.dot([0.100,0.200],x_data) + 0.300,经过200次的训练更新w,b参数为[[0.10000721 0.20001122]] [0.29998967],非常接近我们方程的参数。
觉得不错,就给我点小支持吧,蟹蟹