Мне нужно второе мнение по этому поводу.У меня есть модель CNN для обучения и оценки с использованием тензорного потока, и мои входные данные слишком много, поэтому я не могу загрузить их все в память.
Моя мысль заключалась в том, чтобы загрузить подмножество данных в память, начать сеанс поезда с несколькими эпохами, сохранить лучшую эпоху текущего пробега до окончания обучения для заданного числа эпох.
Затем загрузите новое подмножество данных (из остатков), восстановите переменные предыдущей модели, перезапустите процесс обучения и так далее, пока я не использую все свои данные!Это хороший способ сделать это?
Для поезда я использую набор поездов и набор проверки, чтобы избежать перекармливания.Мой код выглядит так:
network = CNN(model_id)
n_tfiles=350 # how many train files will read
n_vfiles=round(0.567*n_tfiles) # how many validation data
iter=0
for i in range(1,total_inp_files,n_tfiles):
# loop until all data are read
network.input(n_tfiles,n_vfiles)
with tf.device('/gpu:0'):
# restore()
if(iter==0):
# Define the train computation graph
network.define_train_operations()
# Train the network
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement = True)) # session with log about gpu exec
#sess= tf.Session()
try:
print(iter)
network.train(sess,iter)
iter+=1
# save()
except KeyboardInterrupt:
print()
finally:
sess.close()