文章目录
写在前面:本次实验是在Pycharm里面的console写的,方便交互。
1 维度变换
1.1 tf.reshape()
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()
-
一般情况的转置
-
如果要确定哪些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的格式
改变之后,这个数据格式就能被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])