TensorFlow学习(五):数学,随机与形状操作

更新时间:

  • 2017.5.9 :删掉了大部分琐碎,留下了很重要的东西

  • 2019.4.17 迁移到tensorflow 2.x

这个部分的所有示例代码都可以在我的GitHub上面找到:LearningTensorFlow/6.Probability/

一.数学函数tf.math

tensorflow 2.x 简化和统一了常见额数学函数。因为很简单,这里就不展开一个个说了,反正涉及到基本或者复杂的数学运算,尤其是非常用的reduce_xxx或者segment_xxx操作都可以找到。

二.随机值tf.random

TensorFlow里面有一些产生带有不同分布的随机tensor的操作。每次被这些操作每次被计算(evaluated)的时候都能够产生一个新的随机值。这里为什么讲这个呢?是因为很多时候对于网络的权重初始化的时候,要是需要随机初始化,这里的函数就非常有用了.
tensorflow 2.x继续统一了和简化了API,这里也不多细讲了,直接去tf.random可以找到。

三.基本形状操作

tf.shape(input,out_type=tf.dtypes.int32,name=None)

作用:
返回一个1维tensor表示input的形状
参数:
input: 输入的tensor
out_type: (可选)输出的类型(int32 or int64), 默认tf.int32
name: 可选,这个操作的名字

tf.size(input, name=None, out_type=tf.int32)

作用:返回一个tensor的size,也即是input的元素数量
参数:
input: 输入的tensor
name: 操作的名字
out_type: 输出的类型 (int32 or int64),默认int32

tf.rank(input, name=None)

作用:返回一个tensor的rank,也可以理解为维度数
参数:
input: 输入的tensor
name: 操作名字

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

作用:
改变一个tensor的形状,按照指定的shape返回一个tensor。要是形状的某个分量是特殊值-1,那么就会计算该维度的大小,使得总大小(元素数量)保持不变,特殊的,如果传入的形状是[-1],那么意味着把整个tensor弄平为1维。必须确保变形前和变形之后的总元素个数是相同的。
参数:
tensor: tensor,待被改变形状的tensor
shape: tensor,必须是 int32, int64.决定了输出tensor的形状
name: (可选),操作的名称
如果形状的一个分量是特殊值-1,则计算该维度的大小,以使总大小保持不变。

还有其他的一些函数如下,可以参考官方文档获得更加详细的使用.
tf.squeeze(input, squeeze_dims=None, name=None)
tf.expand_dims(input, dim, name=None)

举个例子:

import tensorflow as tf

#基本形状操作
def basic_shape():
    a=tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
    print("tf.shape:",tf.shape(a))
    print("tf.size:",tf.size(a))
    print("tf.rank:",tf.rank(a))

def reshape_ops():
    a = tf.constant(value=[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
    print("a:\n",a)
    b=tf.reshape(tensor=a,shape=(a.shape[0]*a.shape[1],-1))
    print("b:\n",b)


if __name__=="__main__":
    basic_shape()
    reshape_ops()**

结果:

tf.shape: tf.Tensor([2 2 3], shape=(3,), dtype=int32)
tf.size: tf.Tensor(12, shape=(), dtype=int32)
tf.rank: tf.Tensor(3, shape=(), dtype=int32)
a:
 tf.Tensor(
[[[1 1 1]
  [2 2 2]]

 [[3 3 3]
  [4 4 4]]], shape=(2, 2, 3), dtype=int32)
b:
 tf.Tensor(
[[1 1 1]
 [2 2 2]
 [3 3 3]
 [4 4 4]], shape=(4, 3), dtype=int32)

因为结果是很简单的,所以这里就不多分析了。

二.操作同时降维

这部分的需求其实是非常大的,我们经常用到,但是函数还是很简单的,目前都已经移动到tf.math里面去了。可以参考那些名字叫做tf.math.reduce_xxx的函数。这里就不多说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值