Model saya dilatih pada gambar digit ( MNIST dataset
). Saya mencoba untuk mencetak output dari lapisan kedua dari jaringan saya - sebuah array dari 128 angka.
Setelah membaca banyak contoh - misalnya ini , dan ini , atau ini .
Saya tidak berhasil melakukan ini di jaringan saya sendiri. Tidak ada solusi yang bekerja dengan algoritma saya sendiri.
Tautan ke Colab: https://colab.research.google.com/drive/1MLbpWJmq8JZB4_zKongaHP2o3M1FpvAv?fbclid=IwAR20xRz2i6sFS-Nm6Xwfk5hztdXOuxAgAxXXAgX
Saya menerima banyak pesan kesalahan yang berbeda. Saya mencoba menangani mereka masing-masing, tetapi tidak dapat menemukannya sendiri.
Apa yang saya lewatkan? Bagaimana cara mengeluarkan lapisan kedua?
Jika Bentuk saya (28,28)
- apa yang harus menjadi jenis & nilai input_shape
?
Uji coba & Kesalahan yang gagal misalnya:
(1)
for layer in model.layers:
get_2nd_layer_output = K.function([model.layers[0].input],[model.layers[2].output])
layer_output = get_2nd_layer_output(layer)[0]
print('\nlayer output: get_2nd_layer_output=, layer=', layer, '\nlayer output: get_2nd_layer_output=', get_2nd_layer_output)
TypeError: input harus berupa daftar atau tuple.
(2)
input_shape=(28, 28)
inp = model.input # input placeholder
outputs = [layer.output for layer in model.layers] # all layer outputs
functor = K.function([inp, K.learning_phase()], outputs ) # evaluation function
# Testing
test = np.random.random(input_shape)[np.newaxis,...]
layer_outs = functor([test, 0.])
print('layer_outs',layer_outs)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Kesalahan saat membaca variabel sumber daya dense_1 / bias dari Container: localhost. Ini bisa berarti bahwa variabel tersebut tidak diinisialisasi. Tidak ditemukan: Container localhost tidak ada. (Tidak dapat menemukan sumber daya: localhost / dense_1 / bias) [[{{node dense_1 / BiasAdd / ReadVariableOp}}]]
sumber
Jawaban:
Sepertinya Anda mencampur keras lama (sebelum tensorflow 2.0:)
import keras
dan keras baru (from tensorflow import keras
).Cobalah untuk tidak menggunakan keras lama bersama tensorflow> = 2.0 (dan tidak merujuk pada dokumentasi lama seperti di tautan pertama Anda), karena mudah bingung dengan yang baru (meskipun tidak ada yang benar-benar tidak masuk akal):
Perilaku akan sangat tidak stabil mencampurkan kedua perpustakaan itu.
Setelah ini dilakukan, gunakan jawaban dari apa yang Anda coba, m menjadi model Anda, dan
my_input_shape
menjadi bentuk input model Anda yaitu bentuk satu gambar (di sini (28, 28) atau (1, 28, 28) jika Anda memiliki batch):Jika Anda memiliki satu gambar,
img
Anda dapat langsung menulisnew_temp_model.predict(img)
sumber
input_shape=(28, 28)
my_input_data
dengan data Anda sendiri tentu saja(Mengasumsikan TF2)
Saya pikir pendekatan yang paling mudah adalah memberi nama layer Anda, dan kemudian menyebutnya dengan input standar, sehingga model Anda mungkin terlihat seperti
Maka cukup buat input dan
output_of_hidden
adalah apa yang kamu cariPendekatan alternatif
Jika Anda mencari solusi yang lebih umum, dengan asumsi model Anda berurutan, Anda dapat menggunakan
index
kata kunciget_layer
seperti iniPada akhir dari loop ini
my_input
harus apa yang Anda carisumber
output_of_hidden.numpy()
dan itu akan mengubahnya menjadi array numpy