Tensorflow的初学习进程(1)——第一个例子

从一个tensorflow的例子着手,开始理解一个tensorflow上的学习程序是怎么运作的

首先引入一个头文件

import tensorflow as tf                        

import numpy as np                     

numpy:NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)。利用numpy可以很容易地实现矩阵,数组的构造与操作。

#creat data

x_data = np.random.rand(100).astype(np.float32)

y_data = x_data*0.1+0.3

 numpy的random库用于生成随机数,包含了以下几种常用的函数:

  1. numpy.random.rand(d0, d1, ..., dn):生成一个[0,1)之间的随机浮点数或N维浮点数组。
  2. numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本数。
  3. numpy.random.standard_normal(size=None):生产一个浮点数或N维浮点数组,取数范围:标准正态分布随机样本
  4. numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

astype:转换数组的数据类型。这里将输出的随机数转换为32位的浮点数模式存储

同样常见的dtype:一个用于说明数组数据类型的对象。返回的是该数组的数据类型。

#create tensorflow structure start###

Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))

biases = tf.Variable(tf.zeros([1]))

y = Weights*x_data+biases

loss = tf.reduce_mean(tf.square(y-y_data))

optimizer = tf.train.GradientDescentOptimizer(0.5)

train = optimizer.minimize(loss)

init = tf.initialize_all_variables()

###create tensorflow structure end####

tf.Variable(initializer,name)构造函数需要变量的初始值,它制定了variable的类型和形状,initializer是初始化参数,name是可自定义的变量名称。

tf.random_uniform(),生成一个-1.0和1.0之间的形状是[1]的数组。

loss是误差方程,reduce_mean函数用于张量tensor沿着指定的数轴上的平均住,主要用作降维或计算tensor的平均值

optimizer是优化器,这里利用了tf的梯度下降优化器,优化程度是0.5,一般这个值都是小于1。

train是训练,利用刚才提到的优化器将误差方程沿着倒数下降的方向移动。使得误差最小。

init应该是对变量的生成,必须加上这句话,不然之前定义的变量则无法起作用(之后再研究好了)。ps目前tf.initialize_all_variables()已经被改成了tf.global_variables_initializer()。

sess = tf.Session()

sess.run(init)

for step in range(201):

sess.run(train)

if step % 20 == 0:

print(step,sess.run(Weights),sess.run(biases))

这是放在最后的固定搭配,是对程序的循环执行。

完整代码

import tensorflow as tf
import numpy as np

#creat data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1+0.3

#create tensorflow structure start###
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))

y = Weights*x_data+biases

loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

init = tf.initialize_all_variables()
###create tensorflow structure end####

sess = tf.Session()
sess.run(init)

for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(Weights),sess.run(biases))

这是执行输出,每20次训练输出一次对weights和biases的训练的结果,使其越来越接近我们设置的0.1和0.3

猜你喜欢

转载自blog.csdn.net/qq_35601980/article/details/88954710