tensorflow最核心的内容就是搭建神经网络,在建立好的神经网络中加入需要做的数据,让数据自己在网络中运行。
1:总的代码
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import tensorflow as tf import numpy as np #create data x_data=np.random.rand(100).astype(np.float32) y_data=x_data*0.1+0.3 #create tensorflow structure weights=tf.Variable(tf.random_uniform([1],-1.0,1.0)) biases=tf.Variable(tf.zeros([1])) y=weights*x_data+biases #Defines the loss loss=tf.reduce_mean(tf.square(y-y_data)) #Select the optimizer to minimize the loss optimizer=tf.train.GradientDescentOptimizer(0.5) train=optimizer.minimize(loss) # Important step---Initializes all variables init=tf.initialize_all_variables() # Sess.run ---it will start the operation sess=tf.Session() sess.run(init) #Iterations of 201 times for step in range(501): sess.run(train) if step %20==0: print(step,sess.run(weights),sess.run(biases))
2、步骤讲解
导入或者随机定义训练的数据 x 和 y:
x_data=np.random.rand(100).astype(np.float32) #随机生成100个数据,因为tensorflow中实行的是32位浮点数,所以定义数据类型为32位的浮点数
y_data=x_data*0.1+0.3 #输入y的公式,训练后的weights接近0.1,biases接近0.3
定义出参数 Weights,biases,拟合公式 y:
weights=tf.Variable(tf.random_uniform([1],-1.0,1.0)) # 开始的weights为随机设置的值;[1]表示为1维数组;-1.0,1.0--表示范围为-1到1之间
biases=tf.Variable(tf.zeros([1])) #定义的biases初始值为0 y=weights*x_data+biases #定义公式,和输入的公式一致
误差公式loss
loss=tf.reduce_mean(tf.square(y-y_data)) #开始的时候误差很大
选择 Gradient Descent 这个最基本的 Optimizer:
optimizer=tf.train.GradientDescentOptimizer(0.5) #神经网络最主要的工作就是:建立优化器,减少误差,这里选择了梯度下降的算法,学习率是0.5
train=optimizer.minimize(loss) #使loss达到最小
前面是定义,在运行模型前先要初始化所有变量:
init=tf.initialize_all_variables() #让所有的变量活动起来
接下来把结构激活,sesseion像一个指针指向要处理的地方:
sess=tf.Session()
sess.run(init) #激活init
开始训练,训练200步,每20步打印weights和biases
for step in range(501):
sess.run(train)
if step %20==0:
print(step,sess.run(weights),sess.run(biases))
3 Python运行结果