本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。
輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片,雖然生成的效果有點差勁,但不難看出輪廓跟原先的資料也是很接近了,畢竟模型跟訓練集的資料都偏簡單,利用簡單的範例來理解,VAE的作用及功能。
tf.random.normal隨機產生的數據轉換成NumPy 陣列,在Show出。可以更直觀的觀察輸入這些像雜訊的東西,經過VAE訓練好的解碼器來生成圖片。
Python version: 3.11.3
NumPy version: 1.24.2
Pandas version: 1.5.3
Matplotlib version: 3.7.1
tensorflow version: 2.13.0
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
from keras.models import load_model
# 載入模型
loaded_var_ae = load_model('模型路徑')
# 設置隨機種子
tf.random.set_seed(1)
# 產生隨機數據
random_codings = tf.random.normal(shape= [10, 10])#隨機產生5*10(Coding)
imgs = loaded_var_ae(random_codings)
plt.figure(figsize=(10, 2))
for i in range(0,10):
plt.subplot(2, 5, 1 + i)
plt. imshow (imgs [i], cmap='binary')
plt.axis('off')
plt.show()
# 載入模型
loaded_var_ae = load_model('模型路徑')
load_model('F:/python/opencv/color_anlyce/var_decoder.h5')
:載入保存在 'var_decoder.h5'
文件中的解碼器模型。load_model
函數從 HDF5 文件中讀取模型結構和權重。# 設置隨機種子
tf.random.set_seed(1)
tf.random.set_seed(1)
:設置 TensorFlow 隨機數生成的種子,以確保結果可重複。# 產生隨機數據
random_codings = tf.random.normal(shape=[10, 10]) # 隨機產生 10*10 (Coding)
tf.random.normal(shape=[10, 10])
:生成形狀為 [10, 10]
的隨機數據,這些數據代表潛在空間的編碼(通常在變分自編碼器中使用)。imgs = loaded_var_ae(random_codings)
loaded_var_ae(random_codings)
:使用載入的解碼器模型生成圖像。這裡的 random_codings
作為模型的輸入,模型會將這些潛在編碼轉換為圖像。plt.figure(figsize=(20, 2))
plt.figure(figsize=(20, 2))
:創建一個新的圖形窗口,設置其大小為 10x2 英寸。for i in range(0,10):
plt.subplot(2, 5, 1 + i)
plt. imshow (imgs [i], cmap='binary')
plt.axis('off')
for i in range(0,10):
:循環處理 10張生成的圖像。plt.subplot(2, 5, 1 + i)
:設置圖形的子圖位置。這裡 2, 5
指定圖形有 2 行 5 列的子圖,1 + i
設定當前子圖的位置。plt.imshow(imgs[i], cmap='binary')
:顯示第 i
張生成的圖像,使用 binary
顏色映射。plt.axis('off')
:隱藏子圖的坐標軸。plt.show()
plt.show()
:顯示圖形窗口。