Compreendendo os valores de summary () (Output Shape, Param #)?

Nov 15 2020

Estou verificando a saída da summaryfunção e não entendo todos os valores impressos.

Por exemplo, observe este código simples:

x = [1, 2, 3, 4, 5]
y = [1.2, 1.8, 3.5, 3.7, 5.3]
model = Sequential()
model.add(Dense(10, input_dim=1, activation='relu'))
model.add(Dense(30, input_dim=1, activation='relu'))
model.add(Dense(10, input_dim=1, activation='relu'))
model.add(Dense(1))
model.summary()

A saída:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 10)                20        
_________________________________________________________________
dense_1 (Dense)              (None, 30)                330       
_________________________________________________________________
dense_2 (Dense)              (None, 10)                310       
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 11        
=================================================================
Total params: 671
Trainable params: 671
Non-trainable params: 0
_________________________________________________________________
  1. Por que o significado de Nenhum tem valor, abaixo da coluna Output Shape? o que nenhum significa aqui?
  2. Qual rede não mostrará Nenhum no resumo?
  3. Por que é o significado da Params #coluna? Como esse valor é calculado?

Respostas

1 Tasnuva Nov 15 2020 at 13:11
  1. O None é apenas um marcador de posição dizendo que a rede pode inserir mais de uma amostra ao mesmo tempo. Nenhum significa que esta dimensão é variável. A primeira dimensão em um modelo keras é sempre o tamanho do lote. ... É por isso que esta dimensão é freqüentemente ignorada quando você define seu modelo. Por exemplo, quando você define input_shape = (100,200), na verdade você está ignorando o tamanho do lote e definindo a forma de "cada amostra".

  2. Nonenão aparecerá se você definir um lote fixo. Por exemplo, se você enviasse um lote de 10 imagens, seu formato seria (10, 64, 64, 3) e se você alterasse para 25, você teria (25, 64, 64, 3)

  3. Para a camada densa_1 , o número de parâmetros é 20. Isso é obtido como: 10 (valores de entrada) + 10 (valores de polarização)

    Para densa 2ª camada , o número de parâmetros é 330. Isso é obtido como: 10 (valores de entrada) * 30 (neurônios na segunda camada) + 30 (valores de polarização para neurônios na segunda camada)

    Para dense_3ª camada , o número de parâmetros é 310. Isso é obtido como: 30 (valores de entrada) * 10 (neurônios na terceira camada) + 10 (valores de polarização para neurônios na terceira camada)

    Para a camada final , o número de parâmetros é 11. Isso é obtido como: 10 (valores de entrada) * 1 (neurônios na segunda camada) + 1 (valores de polarização para neurônios na camada final)

    total de parâmetros = 20 + 330 + 310 + 11 = 671