Autoencoder 的损失值高可能由于以下几个原因:
from sklearn.preprocessing import MinMaxScaler
# 进行归一化
scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)
from keras.layers import Input, Dense
from keras.models import Model
from keras import regularizers
input_shape = (784,)
encoding_dim = 32
# 定义输入
input_data = Input(shape=input_shape)
# 编码层
encoded = Dense(encoding_dim, activation='relu',
activity_regularizer=regularizers.l1(10e-5))(input_data)
# 解码层
decoded = Dense(input_shape[0], activation='sigmoid')(encoded)
autoencoder = Model(inputs=input_data, outputs=decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
autoencoder.fit(x_train, x_train,
epochs=50,
batch_size=256,
shuffle=True,
validation_data=(x_test, x_test))
from sklearn.decomposition import PCA
# PCA降维
pca = PCA(n_components=32)
x_train = pca.fit_transform(x_train)
x_test = pca.transform(x_test)
# 或者使用数据增强
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.1,
zoom_range=0.1,
horizontal_flip=True,
vertical_flip=False,
fill_mode='nearest')
datagen.fit(x_train)
上一篇:AutoEncoder的输出结果为(61,61,3)而非(64,64,3)。
下一篇:AutoEncoder的一维卷积层改变了输出的形状并导致了ValueError:Dimensionsmustbeequal。