web-dev-qa-db-fra.com

Keras ImageDataGenerator ou TensorFlow tf.data?

Avec Keras2 implémenté dans TensorFlow et TensorFlow 2.0 à l'horizon, si vous utilisez Keras ImageDataGenerator avec par exemple flow_from_directory ou tf.data de TensorFlow qui peut également être utilisé avec fit_genearator de Keras maintenant?

Les deux méthodes auront-elles leur place en poursuivant un objectif différent ou tf.data être la nouvelle voie à suivre et les générateurs Keras obsolètes à l'avenir?

Merci, je voudrais emprunter le chemin qui me tient au courant un peu plus longtemps dans ce domaine en évolution rapide.

6
Florida Man

Pour moi, je préfère construire un générateur avec yield:

def generator(batch_size=4,path):
imgs=glob(path+'*.jpg')
while True:
    batch=[]
    for i in range(batch_size):
        idx=np.random.randint(0,len(imgs))
        img=cv.resize(cv.imread(imgs[idx]),(256,256))/255
        batch.append(img)
    batch=np.array(batch)
    yield batch

Créez ensuite le générateur et saisissez-le dans model.fit_generator, ça va marcher.

Vous pouvez choisir des données de manière aléatoire comme celle-ci ou utiliser des méthodes récurrentes.

Bien que le code soit approximatif, il est facile de le changer pour générer un lot complexe.

Notez que c'est un moyen de générer pour TF 1.X avec Keras2 et non avec TensorFlow 2.0.

0
hhz