Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

tf.keras.optimizers.Adam

TensorFlow 1 versi Lihat sumber di GitHub

Optimizer yang mengimplementasikan algoritma Adam.

Mewarisi Dari: Optimizer

Digunakan di notebook

Digunakan dalam panduan Digunakan dalam tutorial

optimasi Adam adalah metode gradient descent stochastic yang didasarkan pada estimasi adaptif dari orde pertama dan orde kedua saat.

Menurut Kingma et al., 2014 , metode ini "komputasi efisien, memiliki kebutuhan memori kecil, invarian untuk rescaling diagonal dari gradien, dan juga cocok untuk masalah yang besar dalam hal data / parameter".

learning_rate Sebuah Tensor , nilai floating point, atau jadwal yang merupakan tf.keras.optimizers.schedules.LearningRateSchedule , atau callable yang tidak mengambil argumen dan mengembalikan nilai sebenarnya untuk digunakan, Tingkat pembelajaran. Defaultnya 0,001.
beta_1 Sebuah nilai float atau tensor konstan float, atau callable yang tidak mengambil argumen dan mengembalikan nilai sebenarnya untuk digunakan. Tingkat peluruhan eksponensial untuk estimasi saat 1st. Default menjadi 0,9.
beta_2 Sebuah nilai float atau tensor konstan float, atau callable yang tidak mengambil argumen dan mengembalikan nilai sebenarnya untuk digunakan, Tingkat peluruhan eksponensial untuk estimasi saat-2. Defaultnya 0,999.
epsilon Sebuah konstan kecil untuk stabilitas numerik. epsilon ini adalah "epsilon topi" di Kingma dan Ba ​​kertas (dalam formula sebelum Bagian 2.1), bukan epsilon di Algoritma 1 kertas. Default untuk 1e-7.
amsgrad Boolean. Apakah untuk menerapkan AMSGrad varian dari algoritma ini dari kertas "Di Konvergensi Adam dan seterusnya". Default untuk False .
name nama opsional untuk operasi dibuat ketika menerapkan gradien. Default ke "Adam" .
**kwargs argumen kata kunci. Diizinkan untuk menjadi salah satu dari "clipnorm" atau "clipvalue" . "clipnorm" (float) klip gradien oleh norma; "clipvalue" (float) klip gradien berdasarkan nilai.

Pemakaian:

opt = tf.keras.optimizers.Adam(learning_rate=0.1)
var1 = tf.Variable(10.0)
loss = lambda: (var1 ** 2)/2.0       # d(loss)/d(var1) == var1
step_count = opt.minimize(loss, [var1]).numpy()
# The first step is `-learning_rate*sign(grad)`
var1.numpy()
9.9

Referensi:

Catatan:

Nilai default dari 1e-7 untuk epsilon mungkin tidak default baik secara umum. Sebagai contoh, ketika pelatihan jaringan Inception pada ImageNet pilihan yang baik saat ini adalah 1,0 atau 0,1. Perhatikan bahwa sejak Adam menggunakan formulasi sebelum Bagian 2.1 dari Kingma dan Ba ​​kertas daripada formulasi dalam Algoritma 1, "epsilon" disebut di sini adalah "epsilon hat" di koran.

Pelaksanaan jarang algoritma ini (digunakan ketika gradien adalah IndexedSlices keberatan, biasanya karena tf.gather atau embedding lookup di depan pass) tidak berlaku momentum untuk irisan variabel bahkan jika mereka tidak digunakan dalam maju lulus (yang berarti mereka memiliki gradien sama dengan nol). pembusukan momentum (beta1) juga diterapkan untuk seluruh akumulator momentum. Ini berarti bahwa perilaku jarang setara dengan perilaku padat (kontras dengan beberapa implementasi momentum yang mengabaikan momentum kecuali sepotong variabel benar-benar digunakan).

name Sebuah string yang tidak kosong. Nama digunakan untuk akumulator diciptakan untuk optimizer.
**kwargs argumen kata kunci. Boleh { clipnorm , clipvalue , lr , decay }. clipnorm adalah klip gradien dengan norma; clipvalue adalah klip gradien dengan nilai, decay termasuk untuk kompatibilitas untuk memungkinkan waktu peluruhan kebalikan dari tingkat belajar. lr disertakan untuk kompatibilitas, dianjurkan untuk menggunakan learning_rate sebagai gantinya.

ValueError Jika namanya kelainan bentuk.

iterations Variabel. Jumlah pelatihan langkah Optimizer ini telah berjalan.
weights Pengembalian variabel Optimizer ini berdasarkan urutan dibuat.

metode

add_slot

Lihat sumber

Menambahkan variabel slot yang baru untuk var .

add_weight

Lihat sumber

apply_gradients

Lihat sumber

Terapkan gradien untuk variabel.

Ini adalah bagian kedua dari minimize() . Ini mengembalikan sebuah Operation yang berlaku gradien.

Metode ini merangkum gradien dari semua replika di hadapan tf.distribute.Strategy secara default. Anda dapat agregat gradien diri dengan melewati experimental_aggregate_gradients=False .

Contoh:

 grads = tape.gradient(loss, vars)
grads = tf.distribute.get_replica_context().all_reduce('sum', grads)
# Processing aggregated gradients.
optimizer.apply_gradients(zip(grads, vars),
    experimental_aggregate_gradients=False)

 

args
grads_and_vars Daftar (gradien, variabel) pasang.
name nama opsional untuk operasi kembali. Default ke nama diteruskan ke Optimizer konstruktor.
experimental_aggregate_gradients Apakah untuk jumlah gradien dari replika yang berbeda dalam Keberadaan ini tf.distribute.Strategy . Jika False, tanggung jawab pengguna itu untuk agregat gradien. Default Benar.

Pengembalian
Sebuah Operation yang menerapkan gradien tertentu. The iterations akan secara otomatis meningkat sebesar 1.

kenaikan gaji
TypeError Jika grads_and_vars adalah kelainan bentuk.
ValueError Jika tidak ada variabel memiliki gradien.

from_config

Lihat sumber

Menciptakan optimizer dari konfigurasi nya.

Metode ini adalah kebalikan dari get_config , mampu instantiating optimizer yang sama dari config kamus.

argumen
config Sebuah Python kamus, biasanya output dari get_config.
custom_objects Sebuah Python pemetaan nama kamus untuk tambahan Python benda yang digunakan untuk membuat optimizer ini, seperti fungsi yang digunakan untuk hyperparameter a.

Pengembalian
Sebuah optimizer misalnya.

get_config

Lihat sumber

Mengembalikan konfigurasi dari optimizer.

Sebuah config optimizer adalah kamus Python (serializable) yang berisi konfigurasi dari optimizer. Optimizer yang sama dapat reinstantiated kemudian (tanpa negara disimpan) dari konfigurasi ini.

Pengembalian
Python kamus.

get_gradients

Lihat sumber

Pengembalian gradien dari loss sehubungan dengan params .

argumen
loss tensor kerugian.
params Daftar variabel.

Pengembalian
Daftar tensor gradien.

kenaikan gaji
ValueError Dalam hal gradien apapun tidak dapat dihitung (misalnya jika fungsi gradien tidak dilaksanakan).

get_slot

Lihat sumber

get_slot_names

Lihat sumber

Daftar nama untuk slot ini optimizer ini.

get_updates

Lihat sumber