Qual é a utilidade de verbose em Keras ao validar o modelo?

89

Estou executando o modelo LSTM pela primeira vez. Aqui está meu modelo:

opt = Adam(0.002)
inp = Input(...)
print(inp)
x = Embedding(....)(inp)
x = LSTM(...)(x)
x = BatchNormalization()(x)
pred = Dense(5,activation='softmax')(x)

model = Model(inp,pred)
model.compile(....)

idx = np.random.permutation(X_train.shape[0])
model.fit(X_train[idx], y_train[idx], nb_epoch=1, batch_size=128, verbose=1)

Qual é a utilidade de verbose durante o treinamento do modelo?

rakesh
fonte

Respostas:

210

Verifique a documentação de model.fit aqui .

Ao definir verbose 0, 1 ou 2, você apenas diz como deseja 'ver' o progresso do treinamento para cada época.

verbose=0 não vai te mostrar nada (silencioso)

verbose=1 irá mostrar uma barra de progresso animada como esta:

progres_bar

verbose=2 irá apenas mencionar o número de época como este:

insira a descrição da imagem aqui

Ankit
fonte
20
detalhado: Inteiro. 0, 1 ou 2. Modo de verbosidade. 0 = silencioso, 1 = barra de progresso, 2 = uma linha por época. Obrigado @ank, você é demais ..
rakesh
2
Este comentário é a melhor resposta à pergunta, ainda melhor do que a resposta que está sendo comentada. Observe isso e tente evitar palavras apenas para tornar a resposta mais longa. @rakesh, você é demais.
Konstantin Sekeresh 01 de
19

verbose: Integer. 0, 1 ou 2. Modo de verbosidade.

Detalhado = 0 (silencioso)

Detalhado = 1 (barra de progresso)

Train on 186219 samples, validate on 20691 samples
Epoch 1/2
186219/186219 [==============================] - 85s 455us/step - loss: 0.5815 - acc: 
0.7728 - val_loss: 0.4917 - val_acc: 0.8029
Train on 186219 samples, validate on 20691 samples
Epoch 2/2
186219/186219 [==============================] - 84s 451us/step - loss: 0.4921 - acc: 
0.8071 - val_loss: 0.4617 - val_acc: 0.8168

Detalhado = 2 (uma linha por época)

Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.5746 - acc: 0.7753 - val_loss: 0.4816 - val_acc: 0.8075
Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.4880 - acc: 0.8076 - val_loss: 0.5199 - val_acc: 0.8046
Ashok Kumar Jayaraman
fonte
Você pode explicar por que não estou obtendo a saída esperada para diferentes valores de verbosidade. Estou obtendo a mesma saída [silenciosa] para verbose = 0 e 2 para meu arquivo? E para verbose = 1, estou obtendo a barra de progresso apenas no final de épocas como Epoch 10/10 - 21s - loss: 0.2354 - acc: 0.9286 - val_loss: 0.2206 - val_acc: 0.9344 [======== ==========================] Precisão: 0.9344 Erro: 6.560000000000002
Dra. Nisha Arora
ótima resposta, me ajudou. Válido para tensorflow 2.2
Bobs Burgers
9

Para verbose> 0, fitregistros de método:

  • perda : valor da função de perda para seus dados de treinamento
  • acc : valor de precisão para seus dados de treinamento.

Nota: Se mecanismos de regularização forem usados, eles serão ativados para evitar overfitting.

se os argumentos validation_dataou validation_splitnão estiverem vazios, fitlogs do método:

  • val_loss : valor da função de perda para seus dados de validação
  • val_acc : valor de precisão para seus dados de validação

Nota: Os mecanismos de regularização são desligados no momento do teste porque estamos usando todos os recursos da rede.

Por exemplo, usar verboseo modelo durante o treinamento ajuda a detectar o sobreajuste que ocorre se você acccontinuar melhorando enquanto val_accpiora.

Hugo Bevilacqua
fonte
Qual a relevância da regularização para o parâmetro de verbosidade ?!
Chrisji
O parâmetro detalhado não tem impacto nos mecanismos de regularização. Estou apenas adicionando informações sobre o que é exibido se verbose estiver habilitado (para responder à pergunta inicial "Qual é a utilidade de verbose durante o treinamento do modelo?" => Ex: evitar overfitting comparando acc e val_acc).
Hugo Bevilacqua
1

Por padrão detalhado = 1,

verbose = 1, que inclui a barra de progresso e uma linha por época

verbose = 0, significa silencioso

verbose = 2, uma linha por época, ou seja, época no./total no. de épocas

Ashiq Imran
fonte
0

A ordem dos detalhes fornecidos com a sinalização detalhada são como

Menos detalhes .... Mais detalhes

0 <2 <1

O padrão é 1

Para ambiente de produção, 2 é recomendado

DevLoverUmar
fonte