Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.keras.Model

TensorFlow 1 versão Ver fonte no GitHub

Model grupos camadas em um objeto com características de formação e inferência.

Herda de: Layer

Usado nos cadernos

Usado na guia Usado nos tutoriais

inputs A entrada (s) do modelo: um keras.Input objecto ou lista de keras.Input objetos.
outputs A saída (s) do modelo. Veja o exemplo API Funcional abaixo.
name String, o nome do modelo.

Há duas maneiras de instanciar o Model :

1 - Com a "API funcional", onde você começa a partir Input , você encadear chamadas camada para especificar passe para frente do modelo, e, finalmente, você cria seu modelo de entradas e saídas:

 import tensorflow as tf

inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
 

2 - por subclasse o Model de classe: nesse caso, você deve definir suas camadas em __init__ e você deve implementar passe para frente do modelo de call .

 import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

  def call(self, inputs):
    x = self.dense1(inputs)
    return self.dense2(x)

model = MyModel()
 

Se você subclasse Model , você pode, opcionalmente, ter uma training argumento (boolean) em call , que você pode usar para especificar um comportamento diferente no treinamento e inferência:

 import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
    self.dropout = tf.keras.layers.Dropout(0.5)

  def call(self, inputs, training=False):
    x = self.dense1(inputs)
    if training:
      x = self.dropout(x, training=training)
    return self.dense2(x)

model = MyModel()
 

Uma vez que o modelo é criado, você pode config modelo com perdas e métricas com model.compile() , treinar o modelo com model.fit() , ou usar o modelo para fazer previsão com model.predict() .

distribute_strategy O tf.distribute.Strategy este modelo foi criado sob.
layers

metrics_names Retorna exibir rótulos do modelo para todas as saídas.

inputs = tf.keras.layers.Input(shape=(3,))
outputs = tf.keras.layers.Dense(2)(inputs)
model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
model.metrics_names
[]
x = np.random.random((2, 3))
y = np.random.randint(0, 2, (2, 2))
model.fit(x, y)
model.metrics_names
['loss', 'mae']
inputs = tf.keras.layers.Input(shape=(3,))
d = tf.keras.layers.Dense(2, name='out')
output_1 = d(inputs)
output_2 = d(inputs)
model = tf.keras.models.Model(
   inputs=inputs, outputs=[output_1, output_2])
model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"])
model.fit(x, (y, y))
model.metrics_names
['loss', 'out_loss', 'out_1_loss', 'out_mae', 'out_acc', 'out_1_mae',
'out_1_acc']

run_eagerly atributo configurável que indica se o modelo deve executar ansiosamente.

Correndo ansiosamente significa que seu modelo será executado passo a passo, como o código Python. Seu modelo pode ficar mais lento, mas deve tornar mais fácil para você depurá-lo por pisar em chamadas camadas individuais.

Por padrão, vamos tentar compilar o seu modelo para um gráfico estático para oferecer o melhor desempenho de execução.

Métodos

compile

Ver fonte

Configura o modelo de formação.

argumentos
optimizer String (nome de optimizador) ou exemplo optimizador. Veja tf.keras.optimizers .
loss String (nome de função objectivo), função objectivo ou tf.keras.losses.Loss exemplo. Veja tf.keras.losses . Uma função objectivo é qualquer exigível com a assinatura loss = fn(y_true, y_pred) , onde y_true = valores de verdade terreno com forma = [batch_size, d0, .. dN] , com excepção da perda de funções esparsos, tais como crossentropy categórica esparso onde forma = [batch_size, d0, .. dN-1] . y_pred = valores previstos com forma = [batch_size, d0, .. dN] . Ele retorna um tensor perda flutuador ponderada. Se um costume Loss exemplo é usado e redução é definida como NONE, valor de retorno tem a forma [batch_size, d0, .. Dn-1] ou seja. por exemplo ou por iteração valores de perda; caso contrário, é um escalar. Se o modelo tem várias saídas, você pode usar uma perda diferente em cada saída por meio de um dicionário ou uma lista de perdas. O valor da perda que será minimizado pelo modelo será então a soma de todas as perdas individuais.
metrics Lista de métricas a serem avaliados pelo modelo durante o treinamento e teste. Cada um deste pode ser uma cadeia (nome de um embutido de função), a função ou um tf.keras.metrics.Metric exemplo. Veja tf.keras.metrics . Normalmente você vai usar metrics=['accuracy'] . Uma função é qualquer exigível com a assinatura result = fn(y_true, y_pred) . Para especificar métricas diferentes para diferentes saídas de um modelo multi-produto, você também pode passar um dicionário, como metrics={'output_a': 'accuracy', 'output_b': ['accuracy', 'mse']} . Você também pode passar uma lista (len = len (saídas)) de listas de métricas como metrics=[['accuracy'], ['accuracy', 'mse']] ou metrics=['accuracy', ['accuracy', 'mse']] . Quando você passar as cordas 'precisão' ou 'acc', nós converter isso em um dos tf.keras.metrics.BinaryAccuracy , tf.keras.metrics.CategoricalAccuracy , tf.keras.metrics.SparseCategoricalAccuracy baseada na função de perda utilizadas ea forma a saída do modelo. Nós fazemos uma conversão semelhante para as cordas 'crossentropy' e 'ce' também.
loss_weights lista opcional ou coeficientes especificando escalares de dicionário (Python flutua) para ponderar os contributos de perda de diferentes saídas do modelo. O valor da perda que será minimizado pelo modelo será então a soma ponderada de todas as perdas individuais, ponderadas pelos loss_weights coeficientes. Se uma lista, espera-se ter um mapeamento 1: 1 a saídas do modelo. Se um dicionário, espera-se para mapear nomes de saída (cordas) para coeficientes escalares.
weighted_metrics Lista de métricas a serem avaliados e ponderados por sample_weight ou class_weight durante o treinamento e testes.
run_eagerly Bool