基于TensorFlow的深度学习(5)

文章目录


写在前面:本次实验是在Pycharm里面的console写的,方便交互。

1 维度变换

1.1 tf.reshape()

基于TensorFlow的深度学习(5)

tf.reshape(a, [4,-1, 3]).shape
这里的shape表示的是,直接去计算金

还可以非常的灵活:

# 内层的reshape函数先将a变成[4,784]
# 外层的reshape函数再将a变成[4,14,56,3]
tf.reshape(tf.reshape(a,[4,-1]),[4,14,56,3]).shape
Out[52]: TensorShape([4, 14, 56, 3])

1.2 tf.transpose()

  • 一般情况的转置
    基于TensorFlow的深度学习(5)

  • 如果要确定哪些axis进行转变

tf.transpose(a,perm=[0,1,3,2]).shape
Out[56]: TensorShape([4, 3, 1, 2])

一个小实例

  • [b,3,h,w]pytorch的格式
  • [b,h,w,3]tensorflow的格式

基于TensorFlow的深度学习(5)
改变之后,这个数据格式就能被pytorch所接受!

1.3 tf.expand_dims()

a=tf.random.normal([4,35,8])

tf.expand_dims(a,axis=0).shape
Out[63]: TensorShape([1, 4, 35, 8])

tf.expand_dims(a,axis=3).shape
Out[64]: TensorShape([4, 35, 8, 1])

tf.expand_dims(a,axis=-1).shape
Out[65]: TensorShape([4, 35, 8, 1])

1.4 tf.squeeze_dim

  • 仅仅去掉shape=1的那个维度
tf.squeeze(tf.zeros([1,2,1,1,3])).shape
Out[67]: TensorShape([2, 3])
  • 可以用axis来指定某一个维度为1 的
a=tf.zeros([1,2,1,3])
tf.squeeze(a,axis=2).shape
Out[69]: TensorShape([1, 2, 3])
tf.squeeze(a,axis=-2).shape
Out[70]: TensorShape([1, 2, 3])
tf.squeeze(a,axis=-4).shape
Out[71]: TensorShape([2, 1, 3])
上一篇:MNIST手写数字识别案例TensorFlow 2.0 实践


下一篇:【Benewake(北醒) 】短距 TF-Luna介绍以及资料整理