Ich bin begeistert von dem neuen Modell (d. H. Wide_n_deep learning) von Google und Tensorflow. Also versuche ich damit zu spielen, indem ich the tutorial example ausführen.Tensorflow Wide & Deep Tutorial Beispiel mit Batch
Als ein häufiger Trick beim maschinellen Lernen ist Batch-Lernen wichtig, wenn der gesamte Trainingsdatensatz groß ist. Also versuche ich, das wide_n_deep Lernen Tutorial Beispiel zur Verfügung gestellt zu modifizieren Batch Lernen zu erhalten, wie folgt:
index_in_epoch = 0
num_examples = df_train.shape[0]
for i in xrange(FLAGS.train_steps):
startTime = datetime.now()
print("start step %i" %i)
start = index_in_epoch
index_in_epoch += batch_size
if index_in_epoch > num_examples:
if start < num_examples:
m.fit(input_fn=lambda: input_fn(df_train[start:num_examples], steps=1)
df_train.reindex(np.random.permutation(df_train.index)
start = 0
index_in_epoch = batch_size
if i%5 == 1:
results = m.evaluate(input_fn=lambda: input_fn(df_test), steps = 1)
for key in sorted(results):
print("%s: %s %(key, results[key]))
end = index_in_epoch
m.fit(input_fn=lambda: input_fn(df_train[start:end], steps=1)
Einfach gesagt, iterieren ich die gesamte Trainingsdatensatz Charge für Charge, und für jede Charge, ich nenne das „fit "Funktion, um das Modell neu zu trainieren.
Das Problem dieser naiven Strategie ist, dass die Verarbeitungszeit zu langsam ist (zum Beispiel wollen wir einen 4-Millionen-Datensatz 100-mal durchlaufen, mit einer Stapelgröße von 100k, der Trainings- und Auswertungszeit) wäre ungefähr 1 Woche). Also bezweifle ich wirklich, dass ich das Batch-Lernen richtig benutze.
Ich würde schätzen, wenn irgendein Talent Ihre Erfahrung teilen kann, um das Stapellernen beim Spielen mit dem wide_n_deep Lernmodell zu behandeln.
Diese Trainingszeiten sind nicht ungewöhnlich. Imagenet dauert ca. 2 Wochen. –