在tensorflow 2.0中添加无尺寸标注

在tensorflow 2.0中添加无尺寸标注,tensorflow,tensorflow2.0,Tensorflow,Tensorflow2.0,我有一个带形状的张量 >>xx.shape TensorShape([32,32,256]) 如何添加前导None维度以获取 >>xx.shape TensorShape([None,32,32,256]) 我在这里看到了很多答案,但都与TF1.x有关 TF2.0的直接方法是什么?您可以使用“无”或numpy的“新轴”来创建新维度 一般提示:您也可以使用None代替np.newaxis;事实上,这些都是问题所在 下面是解释这两个选项的代码 try: %tensorflow_version 2

我有一个带形状的张量

>>xx.shape

TensorShape([32,32,256])

如何添加前导
None
维度以获取

>>xx.shape

TensorShape([None,32,32,256])

我在这里看到了很多答案,但都与TF1.x有关

TF2.0的直接方法是什么?

您可以使用“无”或numpy的“新轴”来创建新维度

一般提示:您也可以使用None代替np.newaxis;事实上,这些都是问题所在

下面是解释这两个选项的代码

try:
  %tensorflow_version 2.x
except Exception:
  pass
import tensorflow as tf

print(tf.__version__)

# TensorFlow and tf.keras
from tensorflow import keras

# Helper libraries
import numpy as np

#### Import the Fashion MNIST dataset
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

#Original Dimension
print(train_images.shape)

train_images1 = train_images[None,:,:,:]
#Add Dimension using None
print(train_images1.shape)

train_images2 = train_images[np.newaxis is None,:,:,:]
#Add dimension using np.newaxis
print(train_images2.shape)

#np.newaxis and none are same
np.newaxis is None
上述代码的输出是

2.1.0
(60000, 28, 28)
(1, 60000, 28, 28)
(1, 60000, 28, 28)
True

第一个维度是否必须是
None
?您可以使用
xx[tf.newaxis]
tf.expand_dims(xx,0)
轻松添加单个维度。一般来说,没有很多方法可以“擦除”已知的形状信息,特别是当您处于张量不是符号的急切模式时。如果您需要
None
,原因是什么?@jdehesa在创建TF图时需要这样做,第一个维度是
None
,因为它表示批量大小。我正在尝试自己实现一个层:例如,我想要取一个张量形状的
(None,32,32,512)
,并将每四个通道相加为一个通道
yy[,:,:,:,0]=sum(xx[,:,:,:,0:16:4]),yy[,,:,1]=sum(xx[,,,:,,,:,1:17:4])