Estou acompanhando o tutorial do Tensorflow para iniciantes:
E chegamos à nossa primeira linha de código:
Crie um modelo de aprendizado de máquina
Construa um modelo tf.keras.Sequential:
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10) ])
E estou confuso com a primeira linha:
tf.keras.layers.Flatten(input_shape=(28, 28))
Especificamente sobre o input_shape
argumento.
Por quê : porque pensei que a Flatten
operação pegava a camada anterior e a transformava em um vetor 1-d; então o que o input_shape
argumento significa?
Então consultamos a documentação
A documentação em Flatten()
: https://www.tensorflow.org/api_docs/python/tf/keras/layers/Flatten
diz:
Achata a entrada. Não afeta o tamanho do lote.
E especificamente estou interessado no input_shape
argumento:
Argumentos
data_format
Uma string, um dechannels_last
(padrão) ouchannels_first
. A ordenação das dimensões nas entradas. canais_último corresponde a entradas com formato (batch, ..., channels
) enquanto canais_primeiro corresponde a entradas com formato (batch, channels, ...
). Quando não especificado, usaimage_data_format
o valor encontrado no arquivo de configuração do Keras em~/.keras/keras.json
(se existir) else 'channels_last'. O padrão é 'canais_último'.
Não há argumento chamado input_shape
.
Então, o que o argumento significa?
Versão curta
- Se eu estivesse escrevendo código TF a partir da documentação, como saberia que isso
Flatten
leva a uminput_shape
argumento? - Por que o
input_shape
argumento é omitido da documentação?
Em outras palavras: deve haver algum conhecimento básico sobre o TensorFlow que a documentação pressupõe que você tenha, mas não se documenta.
Alguém pode me ajudar a entender esse comportamento indocumentado e por que ele não está documentado?
Esforço de Pesquisa
Além de consultar a documentação, temos:
- Explicação de entrada Keras: input_shape, unidades, batch_size, dim, etc (não é minha pergunta, nem responde minha pergunta)
input_shape
é um argumento opcional que pode ser adicionado à primeira camada (Flatten
ou não) de um modelo Keras. Keras usa seu valor para criar um arquivoInputLayer
implicitamente.Seu modelo é equivalente a este:
Para citar a documentação :