如何从tensorflow数据集中获取批量大小?
建议使用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 =
# 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]