【TensorFlow】常见的对数据操作的方法

import tensorflow as tf

维度变化:

不改变内容的情况下改变数据形状:

=tf.reshape(原数据,想变成的形状)

例:
a=tf.random.normal([4,28,28,3])
###    a.shape    -> [4.28.28.3]
aa=tf.reshape(a,[4,784,3])
###    aa.shape    -> [4,784,3]
aaa=tf.reshape(a,[4,-1,3])
###    aaa.shape    -> [4,784,3]
###    -1的意思是让系统计算此处应该为多少,仅能使用一次. 

对数据进行矩阵转置:

=tf.transpose(原数据,perm=自定义转置) 

perm的维度所对应的数是原数据同一维度的索引(有点不好理解,具体看例子)

例:
###    a.shape    -> [1,2,3,4]
b=tf.transpose(a)
###    b.shape    -> [4,3,2,1]
c=tf.transpose(a,perm=[0,1,3,2])
###    c.shape    -> [1,2,4,3]

 增加维度:

tf.expand_dims(原数据,axis=维度)

减少维度:(仅当该维度的值为1时才可减少)

tf.squeeze(原数据,axis=维度)

例:
###    a.shape    -> [4,28,28,3]
b=tf.expand_dims(a,axis=0)
###    b.shape    -> [1,4,28,28,3]
c=tf.expand_dims(a,axis=4)
###    c.shape    -> [4,28,28,3,1]
d=tf.squeeze(b,axis=0)
###    d.shape    -> [4,28,28,3]
e=tf.squeeze(c,axis=-1)
### e.shape    -> [4,28,28,3]

 数学运算:

求ln a的值:

tf.math.log(x)

若要求logx(y)的值则可:

logx(y)=tf.math.log(y)/tf.math.log(x)

求e的x次方:

tf.exp(x)

求x的y次方:

tf.pow(x,y)        ==        x**y

求x的1/2次方(即开根号):

tf.sqrt(x)

矩阵相乘:

 tf.matmul(x,y)        ==        x@y

例:
a.shape=[2,2]
b.shape=[2,2]
c=tf.matumul(a.b)
c.shape=[2,2]

a= A0  A1
   A2  A3

b= B0  B1
   B2  B3

c= C0  C1
   C2  C3

C0=A0*B0+A1*B2
C1=A0*B1+A1*B3
C2=A2*B0+A3*B2
C3=A2*B1+A3*B3

合并与分割:

拼接(不增加维度):

在z维度上合并x和y:        tf.concat([x,y],axis=z)

例:
### a.shape    -> [4,28,28,3]
### b.shape    -> [2,28,28,3]
c=tf.concat([a,b],axis=0)
### c.shape    -> [6,28,28,3]

 拼接(可增加维度,增加维度时要求其余维度的值都相同):

在z维度上合并x和y:        tf.stack([x,y],axis=z)

例:
### a.shape    -> [4,28,28,3]
### b.shape    -> [4,28,28,3]
c=tf.stack([a,b],axis=0)
### c.shape    -> [2,4,28,28,3]

分割(不可指定数量,可能不保留维度):

在y维度上分割x:        tf.unstack(x,axis=y) 

例:
### c.shape    -> [2,4,28,28,3]
a,b=tf.unstack(c,axis=0)
### a.shape    -> [4,28,28,3]
### b.shape    -> [4,28,28,3]

分割(可指定数量,保留维度):

在y维度上将x分割成z份(可以用列表形式来表示):        tf.split(x,axis=y,num_or_size_splits=z) 

例:
### c.shape    -> [2,4,28,28,3]
a=tf.split(c,axis=0,num_or_size_splits=2)
### len(a)    -> 2
### a[0] == a[1]
### a[0].shape    -> [1,4,28,28,3]
b=tf.split(c,axis=0,num_or_size_splits=[1,1,2])
### len(b)    ->3
### b[0] == b[1]
### b[0].shape    -> [2,4,28,28,1]
### b[2].shape    -> [2,4,28,28,2]

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow 是一个流行的开源深度学习框架,提供了各种算子(operator)来支持各种机器学习和神经网络任务。下面是一些常见TensorFlow 算子: 1. tf.constant:创建一个常量张量。可以指定张量的形状和数值。 2. tf.Variable:创建一个可变的张量。与常量不同,变量的值可以在计算过程中被修改。 3. tf.placeholder:创建一个占位符,用于传递输入数据。在实际运行时,需要通过 feed_dict 参数来提供具体的输入。 4. tf.add:对两个张量进行加法运算。 5. tf.multiply:对两个张量进行乘法运算。 6. tf.matmul:计算两个矩阵的乘积。 7. tf.reduce_sum:对张量中的元素求和。 8. tf.reduce_mean:对张量中的元素求平均值。 9. tf.argmax:返回张量中最大值的索引。 10. tf.nn.softmax:计算张量的 softmax 函数值,常用于多分类问题。 11. tf.nn.relu:计算张量的 ReLU 函数值,常用于激活神经网络的隐藏层。 12. tf.nn.dropout:对张量中的元素进行随机失活,用于防止模型过拟合。 13. tf.nn.conv2d:进行二维卷积操作,适用于图像处理任务。 14. tf.nn.rnn_cell.BasicRNNCell:定义一个基本的 RNN 单元。 15. tf.train.AdamOptimizer:使用 Adam 优化算法来调整模型参数。 以上只是 TensorFlow 中一部分常见算子的简要介绍,实际在使用时还有很多其他的算子可以选择,根据具体的任务和需求进行选择和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值