Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah autoencoders dalam Python?

Apakah autoencoders dalam Python?

王林
王林asal
2023-06-03 20:10:382165semak imbas

Autoencoder ialah algoritma pembelajaran tanpa pengawasan yang boleh mempelajari ekspresi ciri data input dan digunakan secara meluas dalam pembelajaran mendalam. Artikel ini akan memperkenalkan pengekod auto dalam Python.

1. Pengenalan kepada Autoencoder

Autoencoder ialah rangkaian saraf yang mengandungi pengekod dan penyahkod. Pengekod memampatkan data input (seperti imej, teks) ke dalam vektor kecil dan penyahkod membina semula data input asal berdasarkan vektor ini. Melalui proses pembinaan semula mampatan ini, pengekod auto boleh mempelajari perwakilan berdimensi rendah bagi data input, iaitu ungkapan ciri.

Proses latihan pengekod automatik tidak diawasi dan tidak memerlukan data berlabel. Prinsipnya adalah untuk meminimumkan ralat pembinaan semula antara input dan output, supaya pengekod dan penyahkod bersama-sama mempelajari perwakilan ciri data input. Struktur pengekod auto boleh dipelbagaikan, seperti pengekod auto biasa, pengekod auto konvolusi, pengekod auto kitaran, dsb.

2. Melaksanakan pengekod auto dalam Python

Melaksanakan pengekod auto dalam Python biasanya menggunakan rangka kerja pembelajaran mendalam, seperti TensorFlow, Keras, PyTorch, dll. Berikut ialah contoh pengekod auto asas, dilaksanakan menggunakan Keras:

from keras.layers import Input, Dense
from keras.models import Model

# 定义编码器
input_img = Input(shape=(784,))
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded_output = Dense(32, activation='relu')(encoded)

# 定义解码器
decoded = Dense(64, activation='relu')(encoded_output)
decoded = Dense(128, activation='relu')(decoded)
decoded_output = Dense(784, activation='sigmoid')(decoded)

# 定义自动编码器模型
autoencoder = Model(inputs=input_img, outputs=decoded_output)

# 编译模型
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

# 加载数据
from keras.datasets import mnist
import numpy as np

(x_train, _), (x_test, _) = mnist.load_data()
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.
x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))
x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))

# 训练模型
autoencoder.fit(x_train, x_train,
                epochs=50,
                batch_size=256,
                shuffle=True,
                validation_data=(x_test, x_test))

Dalam contoh ini, lapisan Padat digunakan untuk mentakrifkan pengekod dan penyahkod, dan fungsi pengaktifan ialah relu dan sigmoid. Mengambil set data digit tulisan tangan MNIST sebagai contoh, model ini dilatih selama 50 zaman. Melalui model yang ditubuhkan melalui latihan, perwakilan ciri berdimensi rendah data boleh diperolehi melalui pengekod.

3. Aplikasi pengekod auto

Pengekod automatik digunakan secara meluas dalam pembelajaran ciri, pengurangan dimensi data, pemampatan imej dan medan lain. Berikut ialah contoh aplikasi pengekod auto dalam pemampatan imej:

# 压缩图像
encoded_imgs = encoder.predict(x_test)
# 解压缩图像
decoded_imgs = decoder.predict(encoded_imgs)

# 可视化图像
import matplotlib.pyplot as plt
n = 10  # 选择要可视化的图像数量
plt.figure(figsize=(20, 4))
for i in range(n):
    # 原始图像
    ax = plt.subplot(2, n, i + 1)
    plt.imshow(x_test[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    # 压缩后的图像
    ax = plt.subplot(2, n, i + 1 + n)
    plt.imshow(decoded_imgs[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
plt.show()

Dalam contoh di atas, pengekod auto terlatih digunakan untuk melakukan pemampatan imej pada set data digit tulisan tangan MNIST dan hingar dikeluarkan semasa proses mampatan dan penyahmampatan , dan melalui visualisasi, kita dapat melihat bahawa imej yang dimampatkan dipulihkan dengan baik.

4. Kesimpulan

Pengekod auto ialah salah satu model yang sangat asas dalam pembelajaran mendalam dan merupakan langkah penting dalam memahami pembelajaran mendalam. Sangat mudah untuk melaksanakan pengekod auto dalam Python Anda hanya perlu memilih rangka kerja pembelajaran mendalam yang sesuai, seperti Keras, PyTorch, dsb. Melalui pengekod auto, kita boleh mempelajari ciri penting data input dan melaksanakan aplikasi seperti pemampatan imej dan pembelajaran ciri.

Atas ialah kandungan terperinci Apakah autoencoders dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn