Por que eu deveria criar um gráfico separado para treinamento e validação no tensorflow?
Estou usando o tensorflow há algum tempo. No começo eu tinha coisas assim:
def myModel(training):
with tf.scope_variables('model', reuse=not training):
do model
return model
training_model = myModel(True)
validation_model = myModel(False)
Principalmente porque comecei com alguns MOOCs que me ensinaram a fazer isso. Mas eles também não usavam TFRecords ou Filas. E não sabia por que estava usando dois modelos separados. Tentei construir apenas um e alimentar os dados com ofeed_dict
: tudo funcionou.
Desde que costumo usar apenas um modelo. Minhas entradas são sempre place_holders e eu apenas insiro dados de treinamento ou validação.
Ultimamente, tenho notado um comportamento estranho em modelos que usamtf.layers.dropout
etf.layers.batch_normalization
. Ambas as funções têm um parâmetro 'training' que eu uso com umtf.bool
espaço reservado. Eu vi tf.layers geralmente usados com umtf.estimator.Estimator
, mas não estou usando. Eu li o código Estimadores e ele parece criar dois gráficos diferentes para treinamento e validação. Pode ser que esses problemas surjam por não ter dois modelos separados, mas ainda estou cético.
Existe uma razão clara para a qual não estou vendo que implica que dois modelos equivalentes separados devam ser usados?