Tensorflow(二)之基础知识初探

Tensorflow两个重要的概念,Tensor和flow。Tensor是张量,可以简单的理解为多维数组,表明了Tensorflow的数据结构。Flow是“流”,表达了张量之间通过计算相互转化的过程,表明了Tensorflow的计算模型。

1.数据模型-张量

    概述:

在Tensorflow中,数据结构都用张量表示。张量中并没有真正保存数字,而是保存了得到数字的计算过程。

   属性:

1)名字

意义:

有两重意义,一是张量的唯一标识符,二是表明张量如何被计算

形式:node:src_output

Node为节点的名称

src_optput表示当前张量来自节点的第几个输出

例:”add:0”表示该张量是计算节点“add”输出的第一个结果

2)维度

描述了张量的维度信息,比如shape=(2,),说明了张量是一个一维数组,数组的长度为2。

3)类型

张量唯一的类型,Tensorflow会对参与运算的所有张量进行类型的检查。不指定类型,会使用默认的类型。 比如不带小数点的默认为int32,带小数点的默认为float32,一般使用dtype来明确指出变量或者常量的类型。支持14种不同类型,主要包括实数(tf.float32,tf.float64)、整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.unit8)、布尔型(tf.bool)和复数(tf.complex64、tf.complex128)。

2.运行模型-会话

   作用:

   会话拥有并管理Tensorflow程序运行时的所有资源,所有计算完成以后需要关闭会话来帮助系统回收资源,否则可能出现资源泄露。

   会话模式:

   1)明确调用会话生成函数和关闭会话函数

sess = tf.Session() #创建一个会话

sess.run(….)  #通过会话得到运算结果

sess.close()  #关闭会话释放资源

   2)使用python上下文管理器使用会话

With tf.Session() as sess:

     sess.run(…)   #不需要调用session.close关闭会话,上下文退出时自动关闭会话释放资源

3.一般流程

  1. 导入/生成样本数据集
  2. 转换和归一化数据。将不符合Tensorflow期望形状的输入样本数据集进行格式转换。
  3. 划分样本数据集为训练样本集、测试样本集合验证样本集。
  4. 设置机器学习参数,即超参数。比如迭代次数、学习率以及其他固定参数。一般一次性初始化所有的机器学习参数。
  5. 初始化变量和占位符。在损失函数最小化的求解过程中,Tensorflow通过占位符获取数据,并调整变量和权重/偏差。
  6. 定义模型结构。通过选择操作、变量和占位符的值来构建计算图。
  7. 声明损失函数。通过损失函数进行评估输出结果,说明预测值与实际值的差距。
  8. 初始化模型和训练模型。Tensorflow通过创建计算图实例,通过占位符赋值,维护变量的状态信息。
  9. 评估机器学习模型。通过训练和测试样本集的评估,可以确定学习模型是否过拟合或者欠拟合。
  10. 调优超参数。可以通过交叉验证方式进行模型调优。
  11. 发布及预测结果。

4.张量的基本使用

import tensorflow as tf
import numpy as np
# 1.使用张量
#  创建指定维度的零向量
zero_tsr = tf.zeros([10, 10])
#  创建指定维度的单位向量
ones_tsr = tf.ones([10, 10])
#  创建指定维度的常数填充的张量
fill_tsr = tf.fill([10, 10], 3)
#  用已知参数张量创建一个张量
constant_tsr = tf.constant([1, 2, 3])
#  根据给定的tensor创建类型大小一致的新的tensor
zero_similar = tf.zeros_like(constant_tsr)
ones_similar = tf.ones_like(constant_tsr)
#  序列向量,跟range()和numpy的linspace()相似
'''
tf.linspace(start, end, num):这个函数主要的参数就这三个,start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。start和end这两个数字必须是浮点数,不能是整数,如果是整数会出错的,请注意!
np.linspace(start, end, num):主要的参数也是这三个,我们平时用的时候绝大多数时候就是用这三个参数。start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。start和end这两个数字可以是整数或者浮点数!
精度不同产生的
'''
linear_tsr = tf.linspace(start=1.0, stop=20.0, num=10)
integer_tsr = tf.range(start=1, limit=21, delta=2)
numpy_array = np.linspace(1, 20, 10)
print(linear_tsr.eval(session=tf.Session()))
print(integer_tsr.eval(session=tf.Session()))
print(numpy_array)
# 随机向量
# 生成均匀分布的随机数  minval<=x<maxval
randunif_tsr = tf.random_uniform([2, 2], minval=0.0, maxval=1.0)
# 生成正态分布的随机数 mean: 正态分布的均值,默认为0 stddev: 正态分布的标准差,默认为1.0
randnorm_tsr = tf.random_normal([2, 2], mean=0.0, stddev=1.0)
# 生成带有指定边界的正态分布的随机数,生成的值遵循一个正态分布,但不会大于平均值2个标准差。
randtrun_tsr = tf.truncated_normal([2, 2], mean=0.0, stddev=1.0)
# 张量/数组的随机化
shuffled_output = tf.random_shuffle(input_tensor)
cropped_ouput = tf.random_crop(input_tensore, crop_size)
# 张量的随机裁剪,对有三通道颜色的图像随机裁剪
cropped_image = tf.random_crop(my_image,[height/2,width/2,3])

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮的开心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值