首页 > 解决方案 > 在多个 h5 文件上训练 ANN Keras(基于 Tensorflow)模型

问题描述

我有 600 个文件(每个文件约 400 MB,总计约 235 GB),格式为“h5”的训练数据。所有文件都包含带有数字的数组,其中列数相同,但行数可能不同。

我有加载一个文件并对其进行培训的经验(代码如下所示),但是如何从这么多文件中加载数据,打乱它们并训练模型?


def load_dataset():
    """
    simply loading dataset 
    """    
    print("Start time of loading data: " + str(datetime.datetime.now())+"\n\n")

    train_dataset = h5py.File('datasets/data.h5', "r")

    data = np.array(train_dataset["data"][:]) 
    # Later in the code, "data" will be split into 
    # X_train and Y_train, e.g. in the comments below

    # Split data into X_train and Y_train
    # X_train_orig = data[:, :5].reshape(data.shape[0],5) 
    # Y_train_orig = data[:, -4].reshape(data.shape[0],1)

    print("End time of loading data: " + str(datetime.datetime.now())+"\n")
    print("Load data: complete\n")

    return data 

标签: pythonpython-3.xtensorflowkerash5py

解决方案


如果每个文件中的所有数据点都是独立同分布 (IID) 并且每个文件对所有类都有很好的表示(即没有严重偏向一个类),则加载一个文件,对其内容进行洗牌并对其进行训练,然后继续到下一个文件,很快就会开始。当您完成最后一个文件时,只要验证分数在提高,就重复。

例如 Word2vec 接受过大量数据数据的训练,但从未将完整数据加载到内存中。仅对完整数据的几个时期就可以收敛训练,您的情况也应该如此。


推荐阅读