如何在MATLAB中创建和保存大型数据集?

如何在MATLAB中创建和保存大型数据集?,matlab,dataset,save,out-of-memory,Matlab,Dataset,Save,Out Of Memory,我有一个张量尺寸200x200x3。我想在MATLAB中生成一个包含7000个张量的数据集,保存在一个.mat文件(或其他可以在Python中读取的扩展名)中,大小为7000 x 200 x 200 x 200 x 3。如何在循环中执行此操作而不将这些变量存储在内存中,而是直接将它们保存在文件中?您可以根据变量生成一个名称,并将其存储在同一个.mat文件中。 您需要添加“-append”标志,以便文件不会被覆盖。 您可能还必须删除循环末尾的临时变量 比如: for i = 1:10 tens

我有一个张量尺寸200x200x3。我想在MATLAB中生成一个包含7000个张量的数据集,保存在一个.mat文件(或其他可以在Python中读取的扩展名)中,大小为7000 x 200 x 200 x 200 x 3。如何在循环中执行此操作而不将这些变量存储在内存中,而是直接将它们保存在文件中?

您可以根据变量生成一个名称,并将其存储在同一个.mat文件中。 您需要添加“-append”标志,以便文件不会被覆盖。 您可能还必须删除循环末尾的临时变量

比如:

for i = 1:10
  tensor = newTensor();
  eval(['tensor_' num2str(i)] '=tensor;');
  save(['path/tensor_.mat'], ['tensor_' num2str(i)], '-append');
  eval(['clearvars tensor_' num2str(i) ';']);
end
有人在他们的网站上问了一些非常类似的问题

将每个张量分开是否可行,以便在Python中阅读它们并将它们用于深度学习体系结构的培训?这取决于您输入的类型/形状。如果输入层接受大小为200x200x200x3的输入,则可以使用小批量的张量对其进行训练。如果您的意思是,您想进一步破坏它(比如在分割每个通道时),那么在阅读Python时可能需要重新组合它们。如中所示,您独立读取三个通道,重建张量,并将其输入网络。但这完全取决于如何定义算法、数据和输入层。这正是我想要做的。输入应该是200 x 200 x 200 x 3。您可以执行
s。(['tensor_u'num2str(i)]=…
然后
保存(…,'-struct',s)
。这将做与您的代码相同的事情,但没有
eval
@BNQ:困难在哪里?您是否收到错误消息、文件中的错误数据或其他信息?struct creation语句是
s。(['tensor_u'num2str(i)])=张量。save语句是
save('tensor.mat','-struct',s',-append')。确保函数中不存在
s
,或者选择以前未使用的变量名。您可以使用
s=[]
初始化它,以确保它没有不同的值。您希望稍后如何加载张量?您是否需要同时加载多个?为什么不使用名为
'tensor0001.mat
'tensor0002.mat'
等的文件,每个张量一个?@LuisMendo我想将其用作训练数据集。每个张量都应该是CNN的输入。我从未见过每个条目都是单个文件的数据集