Use a generator for Keras model.fit_generator

后端 未结 4 2188
情话喂你
情话喂你 2020-12-01 11:08

I originally tried to use generator syntax when writing a custom generator for training a Keras model. So I yielded from __next__. How

4条回答
  •  心在旅途
    2020-12-01 11:58

    This is the way I implemented it for reading files any size. And it works like a charm.

    import pandas as pd
    
    hdr=[]
    for i in range(num_labels+num_features):
        hdr.append("Col-"+str(i)) # data file do not have header so I need to
                                  # provide one for pd.read_csv by chunks to work
    
    def tgen(filename):
        csvfile = open(filename)
        reader = pd.read_csv(csvfile, chunksize=batch_size,names=hdr,header=None)
        while True:
        for chunk in reader:
            W=chunk.values        # labels and features
            Y =W[:,:num_labels]   # labels 
            X =W[:,num_labels:]   # features
            X= X / 255            # any required transformation
            yield X, Y
        csvfile = open(filename)
        reader = pd.read_csv(csvfile, chunksize=batchz,names=hdr,header=None)
    

    The back in the main I have

    nval=number_of_validation_samples//batchz
    ntrain=number_of_training_samples//batchz
    ftgen=tgen("training.csv")
    fvgen=tgen("validation.csv")
    
    history = model.fit_generator(ftgen,
                    steps_per_epoch=ntrain,
                    validation_data=fvgen,
                    validation_steps=nval,
                    epochs=number_of_epochs,
                    callbacks=[checkpointer, stopper],
                    verbose=2)
    

提交回复
热议问题