更新於 2024/07/26閱讀時間約 3 分鐘

[深度學習][Python]利用訓練完成的GAN模型來生成圖片_生成篇

本文將延續上一篇文章,經由訓練好的GAN模型中的生成器來生成圖片


[深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇

[深度學習][Python]訓練CNN的GAN模型來生成圖片_訓練篇


相較之下CNN的GAN生成的效果比較好,但模型也相對比較複雜,訓練時間花的也比較長一點。

MLP的GNA模型生成的結果圖

VAE生成圖


CNN的GNA模型生成的結果圖


Python及套件版本

Python version: 3.11.3
NumPy version: 1.24.2
Matplotlib version: 3.7.1
tensorflow version: 2.13.0

生成圖片程式碼

當初訓練模型,設定生成器的輸入維度不一樣,所以要根據載入模型的輸入維度來設定參數d

CNN模型 : 100

MLP模型 : 30

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
from keras.models import load_model

# 繪製生成圖像用
def plot_multiple_images (images, n=None):
#判斷最后一維度若為 1,則消去最后一維度
if images.shape [-1] == 1:
images = np. squeeze (images, axis=-1)
plt.figure(figsize=(n, 2))

for i in range(n):
plt.subplot(1, int(n/2), i + 1)
plt. imshow (images [i], cmap="binary")
plt.axis ("off")
plt.show ()

# 載入模型
generator = load_model('模型路徑') #載入訓練好的模型 .H5
# 設置隨機種子​
tf.random.set_seed (1)
np.random.seed (1)
# 生成噪聲​
d = 30 # d 是生成器輸入的維度。這些噪聲將作為生成器的輸入,用於生成圖像。
# 30 MLP 100 CNN
noise = tf. random. normal (shape= [10, d]) # 生成一個形狀為 [10, d] 的隨機噪聲張量
# 使用生成器生成圖像
generated_images = generator (noise)
# 顯示生成的圖像
plot_multiple_images (generated_images, 10)


科普

在生成對抗網絡(GAN)中,生成器的輸入維度 d 通常被稱為「潛在空間」或「隱變數空間」的維度。這個潛在空間的向量被稱為「隱變數」或「編碼」(coding)。

以下是「生成器的輸入維度」和「Coding數量」的具體解釋:

生成器的輸入維度 d

生成器的輸入維度 ddd 是指生成器所接受的輸入向量的長度。這個向量是從一個高斯分佈(通常是標準正態分佈)中隨機生成的數據。生成器會將這個隨機向量轉換為一個有意義的數據樣本,例如一張圖片。

Coding數量

Coding數量就是指生成器輸入向量的元素個數。例如,如果 d=30d = 30d=30,這意味著生成器的每個輸入向量都是一個有30個元素的向量。這些隨機生成的向量會通過生成器轉換為新的數據樣本。










分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.