TensorFlow memiliki dua cara untuk mengevaluasi bagian grafik: Session.run
pada daftar variabel dan Tensor.eval
. Apakah ada perbedaan antara keduanya?
python
tensorflow
Geoffrey Irving
sumber
sumber
tf.Tensor.eval()
dantf.Session.run()
, tetapi terhubung adalahtf.Operation.run()
dantf.Tensor.eval()
seperti yang dijelaskan di siniJawaban:
Jika Anda memiliki huruf
Tensor
t, panggilant.eval()
setara dengan panggilantf.get_default_session().run(t)
.Anda dapat menjadikan sesi sebagai default sebagai berikut:
Perbedaan paling penting adalah yang bisa Anda gunakan
sess.run()
untuk mengambil nilai banyak tensor dalam langkah yang sama:Perhatikan bahwa setiap panggilan ke
eval
danrun
akan menjalankan seluruh grafik dari awal. Untuk menyimpan hasil penghitungan dari cache, tetapkan ke atf.Variable
.sumber
a = tf.constant(2.0) b = tf.constant(3.0) ab = tf.matmul(a, b)
dan saya baru saja mendapat keluhan dari tensorflow bahwa bentuknya tidak cocok, saya kira lebih tepatnya, bahwa peringkatnya paling tidak 2.tf.multiply(t, u)
dan itu bekerja dengan baik.Sesi FAQ tentang aliran tensor memiliki jawaban untuk pertanyaan yang persis sama . Saya hanya akan pergi dan meninggalkannya di sini:
Jika
t
adalahTensor
objek,t.eval()
adalah singkatan untuksess.run(t)
(di manasess
sesi default saat ini. Dua potongan kode berikut ini setara:Dalam contoh kedua, sesi bertindak sebagai manajer konteks, yang memiliki efek menginstalnya sebagai sesi default untuk masa pakai
with
blok. Pendekatan manajer konteks dapat menghasilkan kode yang lebih ringkas untuk kasus penggunaan sederhana (seperti tes unit); jika kode Anda berurusan dengan banyak grafik dan sesi, mungkin lebih mudah untuk panggilan eksplisit keSession.run()
.Saya sarankan Anda setidaknya membaca seluruh FAQ, karena dapat menjelaskan banyak hal.
sumber
eval()
tidak bisa menangani objek daftartapi
Session.run()
bisakoreksi saya jika saya salah
sumber
Hal yang paling penting untuk diingat:
Mengetahui hal-hal lain ini mudah :
Saya juga akan menguraikan metode
tf.Operation.run()
seperti di sini :sumber
Dalam tensorflow Anda membuat grafik dan meneruskan nilai ke grafik itu. Grafik melakukan semua kerja keras dan menghasilkan output berdasarkan konfigurasi yang telah Anda buat dalam grafik. Sekarang, ketika Anda meneruskan nilai ke grafik, maka pertama-tama Anda harus membuat sesi tensorflow.
Setelah sesi diinisialisasi maka Anda seharusnya menggunakan sesi itu karena semua variabel dan pengaturan sekarang menjadi bagian dari sesi. Jadi, ada dua cara untuk meneruskan nilai eksternal ke grafik sehingga grafik menerimanya. Salah satunya adalah memanggil .run () saat Anda menggunakan sesi yang sedang dieksekusi.
Cara lain yang pada dasarnya adalah cara pintas untuk ini adalah dengan menggunakan .eval (). Saya mengatakan pintasan karena bentuk lengkap .eval () adalah
Anda bisa memeriksanya sendiri. Di tempat
values.eval()
laritf.get_default_session().run(values)
. Anda harus mendapatkan perilaku yang sama.eval apa yang dilakukan adalah menggunakan sesi default dan kemudian menjalankan run ().
sumber
Tensorflow 2.x Kompatibel Jawaban : Konversi kode mrry ke
Tensorflow 2.x (>= 2.0)
untuk kepentingan komunitas.sumber