Python 具有稀疏矩阵的Tensorflow批处理-批次号可以是任意的吗?
我正在用tensorflow中的稀疏矩阵进行图像识别批处理。我能找到的通过提要将一批稀疏图像传递到会话的唯一方法是将我的稀疏3d图像(x、y、颜色)转换为稀疏4d图像(batchNo、x、y、颜色),并传递索引、值和形状 这很好,但我必须在批处理中不断创建具有适当图像编号的4d图像。我想知道的是,当我最初读取具有任意图像编号(例如0-1000)的数据时,是否可以创建所有这些图像,然后继续提交从无序数据中挑选的50个(例如)作为一个批次。imageNumber对于每个图像都是唯一的,但不是顺序的。这将从我的代码中消除一个大瓶颈Python 具有稀疏矩阵的Tensorflow批处理-批次号可以是任意的吗?,python,tensorflow,sparse-matrix,Python,Tensorflow,Sparse Matrix,我正在用tensorflow中的稀疏矩阵进行图像识别批处理。我能找到的通过提要将一批稀疏图像传递到会话的唯一方法是将我的稀疏3d图像(x、y、颜色)转换为稀疏4d图像(batchNo、x、y、颜色),并传递索引、值和形状 这很好,但我必须在批处理中不断创建具有适当图像编号的4d图像。我想知道的是,当我最初读取具有任意图像编号(例如0-1000)的数据时,是否可以创建所有这些图像,然后继续提交从无序数据中挑选的50个(例如)作为一个批次。imageNumber对于每个图像都是唯一的,但不是顺序的。
def getBatchOfImagesAndLabels(data, batchSize, singlePass = False):
# Get a shuffled array of images and labels.
# Array length will be batchSize or smaller
#if we get to the end of the data on a singlePass
# an image is a dictionary of indices, values, and shape.
batch = data.next_batch(batchSize, singlePass)
images = batch.images
labels = batch.labels
# Convert array of 3d sparse images into a 4d sparse matrix
indices = []
values = []
shape = [len(labels)] + images[0]['shape']
imageNumber=0
for image in images:
for ind in image['indices']:
indices.append([imageNumber] + ind)
values.extend(image['values'])
imageNumber += 1
batchOfImages = {"indices": indices, "values": values, "shape": shape}
return batchOfImages, labels
for循环非常慢。我可以在读取数据时创建4d稀疏矩阵,并从中选择我认为更快的切片吗?对于批处理中的每个图像,切片将具有随机但唯一的图像编号
或者,一些python大师可以提出一种聪明的方法来提高for循环的效率吗