如何在Keras中为自编码器打乱训练数据

我在Keras中使用自编码器。我希望打乱训练数据x_train,使得自编码器能够重构来自同一类别的不同样本。这是可能的吗?

model_train = autoencoder.fit(x_train, x_train,          batch_size=32,          epochs=1000,          shuffle=True,          callbacks=[checkpoint, early_stopping],          validation_data=(x_test, x_test))

我认为shuffle=True是打乱x_train并基于相同的配对计算损失,这并不是我想要的效果。


回答:

这是可能的,但Keras不会为你这样做,因为它会同时打乱数据和标签。假设你已经有了标签,我发现这个函数对你的目的非常有用:

import numpy as npdef create_pairs(data, labels):    # 排除批次维度    pairs = np.empty(0, 2, *data.shape[1:])    for label in np.unique(labels):        idxs = np.where(labels == label)[0]        # 索引必须是偶数以便创建配对        idxs = idxs if len(idxs) % 2 == 0 else idxs[:-1]        np.random.shuffle(idxs)        samples = data[idxs].reshape((-1, 2, *data.shape[1:]))        pairs = np.vstack((pairs, samples))    return pairs[:, 0], pairs[:, 1]

现在数据已被打乱并分成配对,你可以训练你的模型:

x_train, y_train = create_pairs(data, labels)history = model.fit(    x_train, y_train,    batch_size=32,    epochs=1000,    shuffle=True,    callbacks=[checkpoint, early_stopping],    validation_split=0.2)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注