Tensorflow实战指南

给亲爱的老板搭建人工智能平台,数据预处理花了2周已经准备完毕。开始模型搭建。

使用 TensorFlow, 你必须明白 TensorFlow:

  • 使用图 (graph) 来表示计算任务.
  • 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  • 使用 tensor 表示数据.
  • 通过 变量 (Variable) 维护状态.
  • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.

主要数据结构是张量,tensor,变量或者占位符声明为张量。那么,创建张量。

zero_tsr = tf.zeros([3,4])
zero_tsr
<tf.Tensor 'zeros:0' shape=(3, 4) dtype=float32>
ones_tsr = tf.ones([3,4])
#用常数34填充这个维度
filled_tsr = tf.fill([3,4],34)
#传入list类型,后面可以接shape指定该list的维度
constant_tsr = tf.constant([1,2,3])
#万能的 
tf.convert_to_tensor()将常数或者numpy数组转成tensor

创建一个和指定tensor大小一样的新tensor,所有元素是0或者1,

zeros_similar = tf.zeros_like(constant_tsr)
ones_similar = tf.ones_like(constant_tsr)

和range函数或者numpy的linspace函数类似功能的:

liner_tar = tf.linspace(start = 0.0,stop = 1, num = 3)  #包括stop的值
#还有一个range()
range_tsr = tf.range(start=6, limit = 15, delta= 3)   #不包括limit的值
随机张量

均匀分布随机数,从min到max

randunif_tsr = tf.random_uniform([3,4],minval = 0,maxval = 1)

正态分布随机数

random_randn = tf.random_normal([3,4],mean =0.0,stddev = 1.0)

张量随机剪裁

croped_image = tf.random_crop(my_image,[height/2,width/2,3])
封装张量 把张量封装成变量
my_var = tf.Variable(tf.zeros([3,4]))
占位符和变量

变量是机器学习的参数,占位符是tensorflow的对象。

Graph contains a set of Operation objects, which represent units of computation; and Tensorobjects, which represent the units of data that flow between operations.

graph相当于是神经网络的neural,tesor就是data。

懒得看了基础了,直接写例子算了。

import tensorflow as tf
import numpy as np
#用numpy创建一百个随机数,转变成float32格式,因为tf支持这个
x_data = np.random.rand(100).astype(np.float32)
#拿到一个简单线性模型,并获得y值
y_data = x_data * 0.1 + 0.3
#和神经网络一样的,先初始化参数和偏置
Weight = tf.Variable(tf.random_uniform([1],-1.0,1.0))
bias = tf.Variable(tf.zeros([1]))
#weights是一维的,不用写dot
y = Weight * x_data  + bias
#找loss function和调用库去看反向传播的参数优化,步长为0.5,目的是降低lossfunction
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
#初始化所有变量
init = tf.global_variables_initializer()
#sess 调用会话函数,就和open函数差不多。
sess = tf.Session()
sess.run(init)
for step in range(300):
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(Weight),sess.run(bias))
会话控制 session
matrix1 = tf.constant([[2,3,4,5],[6,5,4,2]])
matrix2 = tf.constant([[2,2],[3,3],[1,9],[9,6]])
#matmul  matrix multiply 就是numpy的dot mult就是一个计算图
mult = tf.matmul(matrix1,matrix2)
#控制输出 这个会话运行这个graph
sess = tf.Session()
result  = sess.run(mult)
print(result)
sess.close()  #关闭这个会话
#还可以不用写close,这样运行完后session就自动释放出来了。
with tf.Session() as sess:
    reslut2 = sess.run(mult)

变量:保存和更新网络中的参数

也就是说,神经网络中的参数是必须存在变量中的,这样就不用自己一个个来写了。都有针对W和b的函数,非常人性化。

val = tf.Variable(0,name = 'Count')
const = tf.constant(1)
new = tf.add(val,const)
ass = tf.assign(val,new)
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)
    for i in range(8):
        up = sess.run(ass)
        print(up)
#任何东西都要sess进行运行,他们不会自动运行的,把运行这个步骤独立开来了。
#2
#3
#4








猜你喜欢

转载自blog.csdn.net/gaoyishu91/article/details/80509889