簡體   English   中英

CNN 深度學習模型中的 PCA 使用 Keras

[英]PCA in CNN deep learning model using Keras

我使用 Keras 構建了一個用於圖像分類的 CNN 模型,並且我想對模型使用主成分分析 (PCA)。 如何使用 CNN 中的 PCA 使用 Keras 進行圖像識別?

我已經嘗試了以下代碼,但是當我運行pca.fit()代碼時,代碼仍然運行了幾個小時並且 RAM 已滿。

#Data files
train_iris_data = 'Iris_Database_01/Training'
valid_iris_data = 'Iris_Database_01/Validation'
test_iris_data = 'Iris_Database_01/Testing'

#Image data generator
train_iris_datagen = ImageDataGenerator(
rotation_range=10,
shear_range=0.2,
zoom_range=0.1,
width_shift_range=0.1,
height_shift_range=0.1
)

test_iris_datagen = ImageDataGenerator()

#Image batches
image_size = (224, 224)
batch = 32

# Training
train_iris_generator = train_iris_datagen.flow_from_directory(
train_iris_data,
target_size=image_size,
batch_size=batch,
class_mode='categorical')

# Validation
validation_iris_generator = test_iris_datagen.flow_from_directory(
valid_iris_data, 
target_size=image_size, 
batch_size=batch, 
class_mode='categorical',
shuffle = False)

# Testing
test_iris_generator = test_iris_datagen.flow_from_directory(
test_iris_data,
target_size=image_size, 
batch_size=1, 
class_mode='categorical',
shuffle = False)

pca = PCA(n_components=2)
pca.fit(train_iris_generator)

#pca = PCA(n_components=0.8)
#pca.fit(train_iris_generator)

您可以改用截斷的 SVD。 您可以使用的另一種方法是 IncrementalPCA PCA。

from sklearn.decomposition import TruncatedSVD
from sklearn.decomposition import IncrementalPCA

def func_PCA(input_data):
    input_data = np.array(input_data)
    pca = IncrementalPCA(n_components=50, batch_size=50)
    pca.fit(input_data)
    pca_input_data = pca.transform(input_data)
    eigenvalues = pca.explained_variance_
    eigenvectors = pca.components_
    return pca_input_data, eigenvalues, eigenvectors

def svd_func(input_data):
    svd = TruncatedSVD(n_components=50)
    svd.fit(input_data)
    pca_input_data = svd.transform(input_data)
    eigenvalues = svd.explained_variance_
    eigenvectors = svd.components_
    return pca_input_data, eigenvalues, eigenvectors

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM