如何从tensorflow数据集中获取批量大小?

如何从tensorflow数据集中获取批量大小?,tensorflow,issue-tracking,tensorflow-datasets,Tensorflow,Issue Tracking,Tensorflow Datasets,建议使用tensorflow数据集作为输入管道,其设置如下: # Specify dataset dataset = tf.data.Dataset.from_tensor_slices((features, labels)) # Suffle dataset = dataset.shuffle(buffer_size=1e5) # Specify batch size dataset = dataset.batch(128) # Create an iterator iterator =

建议使用tensorflow数据集作为输入管道,其设置如下:

# Specify dataset
dataset  = tf.data.Dataset.from_tensor_slices((features, labels))
# Suffle
dataset  = dataset.shuffle(buffer_size=1e5)
# Specify batch size
dataset  = dataset.batch(128)
# Create an iterator
iterator = dataset.make_one_shot_iterator()
# Get next batch
next_batch = iterator.get_next()
我应该能够获得批大小(从数据集本身或从数据集创建的迭代器,即
迭代器
下一批
)。也许有人想知道数据集或其迭代器中有多少批。或者调用了多少批,迭代器中还有多少批?您可能还希望同时获取特定元素,甚至整个数据集

我在tensorflow文档中找不到任何东西。这可能吗?如果没有,有人知道这是否是tensorflow GitHub上的一个问题吗?

试试这个

将tensorflow导入为tf
将numpy作为np导入
features=np.array([[3.0,0.0],[1.0,2.0],[0.0,0.0]],dtype=“float32”)
labels=np.array([[0],[0],[1]],dtype=“float32”)
dataset=tf.data.dataset.from_tensor_切片((特征、标签))
批量大小=2
dataset=dataset.batch(批次大小)
iterator=dataset.make_initializable_iterator()
批处理数据=迭代器。获取下一步()
使用tf.Session()作为sess:
运行(迭代器初始化器)

print(np.shape(sess.run(batch_data)[0])[0])
在TF2中,
tf.data.Dataset
s是,因此您只需执行以下操作即可获得批次:

batch = next(iter(dataset))
然后计算批处理大小是很简单的,因为它变成了:

因此,完整的示例如下所示:

# Specify dataset
dataset  = tf.data.Dataset.from_tensor_slices((features, labels))
# Suffle
dataset  = dataset.shuffle(buffer_size=1e5)
# Specify batch size
dataset  = dataset.batch(128)
# Calculate and print batch size
batch_size = next(iter(dataset)).shape[0]
print('Batch size:', batch_size) # prints 128
或者,如果您需要它作为功能:

def calculate_batch_size(dataset):
    return next(iter(dataset)).shape[0]
请注意,在数据集上执行时需要立即执行。此外,此解决方案假定您的数据集是批处理的,如果不是这样,则可能会出错。如果在批处理之后,对数据集执行了其他更改其元素形状的操作,则也可能会遇到错误

def calculate_batch_size(dataset):
    return next(iter(dataset)).shape[0]