TensorFlow笔记-组件

 

张量

TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通.其实张量更代表的就是一种多位数组。

在TensorFlow系统中,张量的维数来被描述为阶.但是张量的阶和矩阵的阶并不是同一个概念.张量的阶(有时是关于如顺序或度数或者是n维)是张量维数的一个数量描述.比如,下面的张量(使用Python中list定义的)就是2阶.

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

你可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量.

数学实例Python例子
0纯量(只有大小)s = 483
1向量(大小和方向)v = [1.1, 2.2, 3.3]
2矩阵(数据表)m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
33阶张量(数据立体)t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]]
nn阶(自己想想看)....

数据类型

Tensors有一个数据类型属性.你可以为一个张量指定下列数据类型中的任意一个类型:

数据类型Python 类型描述
DT_FLOATtf.float3232 位浮点数.
DT_DOUBLEtf.float6464 位浮点数.
DT_INT64tf.int6464 位有符号整型.
DT_INT32tf.int3232 位有符号整型.
DT_INT16tf.int1616 位有符号整型.
DT_INT8tf.int88 位有符号整型.
DT_UINT8tf.uint88 位无符号整型.
DT_STRINGtf.string可变长度的字节数组.每一个张量元素都是一个字节数组.
DT_BOOLtf.bool布尔型.
DT_COMPLEX64tf.complex64由两个32位浮点数组成的复数:实数和虚数.
DT_QINT32tf.qint32用于量化Ops的32位有符号整型.
DT_QINT8tf.qint8用于量化Ops的8位有符号整型.
DT_QUINT8tf.quint8用于量化Ops的8位无符号整型.

然后是tensorflow中对于各种数据的操作:

注意上面向量运算中第三个:分割(split)

 

固定值张量

tf.zeros(shape, dtype=tf.float32, name=None)

tf.zeros_like(tensor, dtype=None, name=None)

tf.ones(shape, dtype=tf.float32, name=None)

tf.ones_like(tensor, dtype=None, name=None

tf.fill(dims, value, name=None)创建一个张量的形状dims并填充它value

tf.constant(value, dtype=None, shape=None, name='Const')创建一个常数张量。

创建随机张量

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

从正态分布中输出随机值,由随机正态分布的数字组成的矩阵

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

从截断的正态分布中输出随机值,和 tf.random_normal() 一样,但是所有数字都不超过两个标准差

tf.random_shuffle(value, seed=None, name=None)

沿其第一维度随机打乱

tf.set_random_seed(seed)

设置图级随机种子

形状和变换

可用于确定张量的形状并更改张量的形状

  • tf.shape(input, name=None)

  • tf.size(input, name=None)

  • tf.rank(input, name=None)

  • tf.reshape(tensor, shape, name=None)

  • tf.squeeze(input, squeeze_dims=None, name=None)

  • tf.expand_dims(input, dim, name=None)


t = tf.placeholder(tf.float32,[None,2])

张量复制与组合

  • tf.identity(input, name=None)

  • tf.tuple(tensors, name=None, control_inputs=None)

  • tf.group(inputs, *kwargs)

  • tf.no_op(name=None)

  • tf.count_up_to(ref, limit, name=None)

逻辑运算符

  • tf.logical_and(x, y, name=None)

  • tf.logical_not(x, name=None)

  • tf.logical_or(x, y, name=None)

  • tf.logical_xor(x, y, name='LogicalXor')

比较运算符

  • tf.equal(x, y, name=None)

  • tf.not_equal(x, y, name=None)

  • tf.less(x, y, name=None)

  • tf.less_equal(x, y, name=None)

  • tf.greater(x, y, name=None)

  • tf.greater_equal(x, y, name=None)

  • tf.select(condition, t, e, name=None)

  • tf.where(input, name=None)

判断检查

  • tf.is_finite(x, name=None)

  • tf.is_inf(x, name=None)

  • tf.is_nan(x, name=None)

  • tf.verify_tensor_all_finite(t, msg, name=None) 断言张量不包含任何NaN或Inf

  • tf.check_numerics(tensor, message, name=None)

  • tf.add_check_numerics_ops()

  • tf.Assert(condition, data, summarize=None, name=None)

  • tf.Print(input_, data, message=None, first_n=None, summarize=None, name=None)。

运行注意

import   os
    
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

 

 实例代码:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
a = tf.constant(2)
# 0维() 一维(4) 二维(2,3) 三维(2,3,4)
# with tf.Session() as sess:
#     print(a.shape)
#     print(a.op)
#     print(a.name)
b = tf.placeholder(tf.float32,[None,2])
print(b)
b.set_shape([3,2])
print(b)
# 一旦静态形状已经固定则不能设置了
# b.set_shape([3,2]) ValueError
# 下面是动态修改,就是生成一个和原来数据的元素数量匹配的新的
c = tf.reshape(b,[2,3])
print(c)

 

转载于:https://www.cnblogs.com/TimVerion/p/11224106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值