使用 Keras 的 CNN 深度学习模型中的 PCA
Posted
技术标签:
【中文标题】使用 Keras 的 CNN 深度学习模型中的 PCA【英文标题】:PCA in CNN deep learning model using Keras 【发布时间】:2019-12-10 06:12:16 【问题描述】:我使用 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)
【问题讨论】:
【参考方案1】:您可以改用截断的 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
【讨论】:
以上是关于使用 Keras 的 CNN 深度学习模型中的 PCA的主要内容,如果未能解决你的问题,请参考以下文章
基于CNN卷积神经网络的TensorFlow+Keras深度学习的人脸识别
[Python人工智能] 三十.Keras深度学习构建CNN识别阿拉伯手写文字图像