如何在pytorch中加载tfrecord?
How to load tfrecord in pytorch?
如何在pytorch中使用tfrecord?
我已经下载了"Youtube8M"个具有视频级特征的数据集,但它存储在tfrecord中。
我试图从这些文件中读取一些示例,将其转换为 numpy,然后加载到 pytorch 中。但是失败了。
reader = YT8MAggregatedFeatureReader()
files = tf.gfile.Glob("/Data/youtube8m/train*.tfrecord")
filename_queue = tf.train.string_input_producer(
files, num_epochs=5, shuffle=True)
training_data = [
reader.prepare_reader(filename_queue) for _ in range(1)
]
unused_video_id, model_input_raw, labels_batch, num_frames = tf.train.shuffle_batch_join(
training_data,
batch_size=1024,
capacity=1024 * 5,
min_after_dequeue=1024,
allow_smaller_final_batch=True ,
enqueue_many=True)
with tf.Session() as sess:
label_numpy = labels_batch.eval()
print(type(label_numpy))
但是这一步没有结果,卡了半天没有任何反应
也许这可以帮助你:TFRecord reader for PyTorch
您可以使用 DALI 库直接在 PyTorch 代码中加载 tfrecords。
您可以了解如何操作 in their documentation。
一种解决方法是使用 tensorflow 1.1* eager 模式或 tensorflow 2+ 循环遍历数据集(因此您可以使用 var len 功能,使用 buckets window),然后只需
torch.as_tensor(val.numpy()).to(device)
在手电筒中使用。
我做了这个:
class LiTS(torch.utils.data.Dataset):
def __init__(self, filenames):
self.filenames = filenames
def __len__(self):
return len(self.filenames)
def __getitem__(self, idx):
volume, segmentation = None, None
if idx >= len(self):
raise IndexError()
ds = tf.data.TFRecordDataset(filenames[idx:idx+1])
for x, y in ds.map(read_tfrecord):
volume = torch.from_numpy(x.numpy())
segmentation = torch.from_numpy(y.numpy())
return volume, segmentation
如何在pytorch中使用tfrecord?
我已经下载了"Youtube8M"个具有视频级特征的数据集,但它存储在tfrecord中。 我试图从这些文件中读取一些示例,将其转换为 numpy,然后加载到 pytorch 中。但是失败了。
reader = YT8MAggregatedFeatureReader()
files = tf.gfile.Glob("/Data/youtube8m/train*.tfrecord")
filename_queue = tf.train.string_input_producer(
files, num_epochs=5, shuffle=True)
training_data = [
reader.prepare_reader(filename_queue) for _ in range(1)
]
unused_video_id, model_input_raw, labels_batch, num_frames = tf.train.shuffle_batch_join(
training_data,
batch_size=1024,
capacity=1024 * 5,
min_after_dequeue=1024,
allow_smaller_final_batch=True ,
enqueue_many=True)
with tf.Session() as sess:
label_numpy = labels_batch.eval()
print(type(label_numpy))
但是这一步没有结果,卡了半天没有任何反应
也许这可以帮助你:TFRecord reader for PyTorch
您可以使用 DALI 库直接在 PyTorch 代码中加载 tfrecords。
您可以了解如何操作 in their documentation。
一种解决方法是使用 tensorflow 1.1* eager 模式或 tensorflow 2+ 循环遍历数据集(因此您可以使用 var len 功能,使用 buckets window),然后只需
torch.as_tensor(val.numpy()).to(device)
在手电筒中使用。
我做了这个:
class LiTS(torch.utils.data.Dataset):
def __init__(self, filenames):
self.filenames = filenames
def __len__(self):
return len(self.filenames)
def __getitem__(self, idx):
volume, segmentation = None, None
if idx >= len(self):
raise IndexError()
ds = tf.data.TFRecordDataset(filenames[idx:idx+1])
for x, y in ds.map(read_tfrecord):
volume = torch.from_numpy(x.numpy())
segmentation = torch.from_numpy(y.numpy())
return volume, segmentation