Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

tf.keras.Model

TensorFlow 1 versi Lihat sumber di GitHub

Model kelompok lapisan menjadi objek dengan fitur pelatihan dan inferensi.

Mewarisi Dari: Layer

Digunakan di notebook

Digunakan dalam panduan Digunakan dalam tutorial

inputs Input (s) dari model: a keras.Input objek atau daftar keras.Input objek.
outputs Output (s) dari model. Lihat API contoh Fungsional bawah.
name String, nama model.

Ada dua cara untuk instantiate Model :

1 - Dengan "API Fungsional", di mana Anda mulai dari Input , Anda rantai panggilan lapisan untuk menentukan model depan lulus, dan akhirnya Anda membuat model Anda dari input dan output:

 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 - Dengan subclassing Model kelas: dalam hal ini, Anda harus mendefinisikan lapisan Anda di __init__ dan Anda harus menerapkan model maju lulus dalam 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()
 

Jika Anda subclass Model , anda dapat memiliki training argumen (boolean) di call , yang dapat Anda gunakan untuk menentukan perilaku yang berbeda dalam pelatihan dan inferensi:

 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()
 

Setelah model dibuat, Anda dapat konfigurasi model dengan kerugian dan metrik dengan model.compile() , melatih model dengan model.fit() , atau menggunakan model untuk melakukan prediksi dengan model.predict() .

distribute_strategy The tf.distribute.Strategy model ini dibuat di bawah.
layers

metrics_names Mengembalikan tampilan label model untuk semua output.

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 Atribut settable menunjukkan apakah model harus dijalankan dengan penuh semangat.

Menjalankan bersemangat berarti bahwa model Anda akan dijalankan langkah demi langkah, seperti kode Python. Model Anda mungkin berjalan lebih lambat, tetapi harus menjadi lebih mudah bagi Anda untuk debug itu dengan melangkah ke panggilan lapisan individu.

Secara default, kami akan mencoba untuk mengkompilasi model Anda untuk grafik statis untuk memberikan kinerja eksekusi terbaik.

metode

compile

Lihat sumber

Mengkonfigurasi model untuk pelatihan.

argumen
optimizer String (nama optimizer) atau optimizer misalnya. Lihat tf.keras.optimizers .
loss String (nama fungsi tujuan), fungsi tujuan atau tf.keras.losses.Loss misalnya. Lihat tf.keras.losses . Fungsi tujuan adalah setiap callable dengan tanda tangan loss = fn(y_true, y_pred) , di mana y_true = nilai-nilai dasar kebenaran dengan bentuk = [batch_size, d0, .. dN] , kecuali fungsi kerugian jarang seperti crossentropy kategoris jarang di mana bentuk = [batch_size, d0, .. dN-1] . y_pred = diprediksi nilai-nilai dengan bentuk = [batch_size, d0, .. dN] . Ia mengembalikan tertimbang kerugian mengambang tensor. Jika kebiasaan Loss contoh digunakan dan pengurangan diatur ke NONE, nilai kembali memiliki bentuk [batch_size, d0, .. dN-1] yaitu. per-sampel atau per-timestep nilai kerugian; jika tidak, itu adalah skalar. Jika model memiliki beberapa output, Anda dapat menggunakan kerugian yang berbeda pada setiap output dengan melewati sebuah kamus atau daftar kerugian. Nilai kerugian yang akan diminimalkan dengan model maka akan menjadi jumlah dari semua kerugian individu.
metrics Daftar metrik yang akan dievaluasi oleh model selama pelatihan dan pengujian. Masing-masing ini bisa menjadi string (nama built-in fungsi), fungsi atau tf.keras.metrics.Metric misalnya. Lihat tf.keras.metrics . Biasanya Anda akan menggunakan metrics=['accuracy'] . Fungsi adalah setiap callable dengan tanda tangan result = fn(y_true, y_pred) . Untuk menentukan metrik yang berbeda untuk output yang berbeda dari model multi-output, Anda juga bisa lulus kamus, seperti metrics={'output_a': 'accuracy', 'output_b': ['accuracy', 'mse']} . Anda juga dapat melewati daftar (len = len (output)) dari daftar metrik seperti metrics=[['accuracy'], ['accuracy', 'mse']] atau metrics=['accuracy', ['accuracy', 'mse']] . Ket