处理大量的训练数据集保存在许多.mat文件

6视图(30天)
你好所有的,
我遇到一个问题,我需要训练LSTM信号分类器与大量的数据。
每一维信号是大约100 k样本,每48信号是保存在一个.mat文件。.mat文件的总数约为2000。
标签也同样保存在相应的.mat文件在一个不同的文件夹。
我想知道如果有一种方法来训练网络的必要性没有整个加载到内存中。(64 gb ram我只能一次加载~ 1300文件)
你的帮助将会非常感激。

接受的答案

迪夫Gaddipati
迪夫Gaddipati 2020年8月13日
您可以使用 fileDatastore 为这个目的。
trainData = fileDatastore (“/道路/ /数据”,“ReadFcn”@load,“FileExtensions”,“.mat”);
您可以使用“负载”或您自己的自定义函数定义如何加载数据。
你也可以参考 链接 更多信息在培训LSTM加载数据时使用 fileDatastore。
1评论
Ruohao张
Ruohao张 2020年8月18日
谢谢你这个答案,我做什么是我现在所有的文件分解成较小的文件每只包含一个矩阵和创建一个数据存储。我遇到的问题是加载函数作用在filedatastore奇怪当你调用它。当我在命令加载.mat它返回一个矩阵,在通过调用加载时filedatastore结合,它加载1 x1细胞。所以我必须编写自己的加载函数,以确保正确的格式

登录置评。

答案(1)

弗朗茨Bouchereau
弗朗茨Bouchereau 2020年8月20日
编辑:弗朗茨Bouchereau 2020年8月20日
Ruohao,
您可以使用两个signalDatastores——一个阅读你的信号文件和另一个读你的标签。您可以使用组合(),然后把他们把combinedDatastore分成训练集和测试集(),然后使用子集喂养合并后的数据存储到LSTM网络的训练函数。
与signslDatastore您不需要编写一个加载函数。你指定变量名称从垫子上读取文件并返回那些在每一个阅读。
HTH
1评论
Ruohao张
Ruohao张 2020年8月21日
谢谢你的回复。的确,signaldatastores真的很有帮助,但遗憾的是这个函数仅仅是在2020年推出,我仍然使用2019 b。它可以是一个良好的动机来更新我的软件:)

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!