TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI 部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域
接下来我们通过一个线性拟合的简单实例来说明一下
第一步,通过np.random.normal 创造一批高斯分布的数据
import numpy as np import matplotlib.pyplot as plt import pandas as pd import tensorflow as tf num_points = 1000 vector_sector = [] # 创造一1000个点 for num_point in range(num_points): x = np.random.normal(0.0, 0.55) y = x*0.1 + 0.3 + np.random.normal(0, 0.03) vector_sector.append([x, y]) #进行添加赋值操作 x_data = [v[0] for v in vector_sector] y_data = [v[1] for v in vector_sector]
第二步: 初始化参数和使用估计值和真实值的均方误差来表示loss
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='W') # 产生一个初始值为0 的b值 b = tf.Variable(tf.zeros([1]), name='b') # 构造线性函数 y = W * x_data + b print(np.shape(y)) # 以预估值y和实际值y_data之间的均方误差作为损失 loss = tf.reduce_mean(tf.square(y-y_data), name='loss')
第三步: 初始化模型,并进行迭代降低loss,优化模型
optimizer = tf.train.GradientDescentOptimizer(0.5) # 训练的时候就是最小化这个参数 train = optimizer.minimize(loss) #进行初始化 sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) # 打印当前值 print('W', sess.run(W), 'b', sess.run(b), 'loss', sess.run(loss)) #循环20次,训练train,降低loss for i in range(20): sess.run(train) print(print('W', sess.run(W), 'b', sess.run(b), 'loss', sess.run(loss)))
第四步: 做出拟合曲线的图
# 做散点图的拟合曲线 plt.scatter(x_data, y_data, c='r') plt.plot(x_data, x_data*sess.run(W)+ sess.run(b)) plt.show()