Memory 如何确保';安装发电机和x27;在Keras中,是否多次扫描数据集?

Memory 如何确保';安装发电机和x27;在Keras中,是否多次扫描数据集?,memory,deep-learning,keras,lstm,Memory,Deep Learning,Keras,Lstm,我正在尝试构建一个用于分类的LSTM模型。我用fit_生成器来匹配内存。代码为: model = Sequential() model.add(LSTM(data_dim, return_sequences=True, input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32 model.add(Dropout(0.5)) model.add(Dense(n_cl

我正在尝试构建一个用于分类的LSTM模型。我用fit_生成器来匹配内存。代码为:

model = Sequential()
model.add(LSTM(data_dim, return_sequences=True,
           input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
model.add(Dropout(0.5))
model.add(Dense(n_classes))  # return the target value

model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics= ['accuracy'])
encoder = load_model('encoder.h5')
model.fit_generator(generate_batches_from_file(path, batchSize, raw_targets, class_weights),
      steps_per_epoch=steps_per_epoch, 
      epochs=scans * n_chunks_train )
生成器代码如下所示:

def generate_batches_from_file(path, batchSize, raw_targets, class_weights):
    while True:
        with open(path, 'r') as file_to_read:
            do_somthing()
            yield something
在处理“batchSize”数据之后,我们将产生一些结果


我的问题是:在我看来,“从文件生成批处理”生成器只会将文件读到最后一次。在文件末尾,它将中断while循环。如果我想多次扫描文件,我应该怎么做?我可以设置一些参数来实现这一点吗?

它将多次读取文件。您已经使用open()编写了
,因此当它到达文件末尾时,程序将关闭该文件。由于您处于
的while
循环中,您将使用open()
返回到
行,打开文件并再次从第1行开始读取。但是,您没有在每个历元开始时对数据进行洗牌。为什么要多次扫描相同的数据?。。您需要更多数据吗?@ParagS.Chandakkar谢谢。我还有一个问题。既然我无法将整个数据集加载到内存中,那么我该如何进行洗牌呢?是我根据每个批次进行洗牌吗?它会多次读取文件。您已经使用open()编写了
,因此当它到达文件末尾时,程序将关闭该文件。由于您处于
的while
循环中,您将使用open()
返回到
行,打开文件并再次从第1行开始读取。但是,您没有在每个历元开始时对数据进行洗牌。为什么要多次扫描相同的数据?。。您需要更多数据吗?@ParagS.Chandakkar谢谢。我还有一个问题。既然我无法将整个数据集加载到内存中,那么我该如何进行洗牌呢?是我根据每个批次进行洗牌吗?