Autoencoder 训练:Adam 优化与二元交叉熵损失函数
Autoencoder 训练:Adam 优化与二元交叉熵损失函数
本文介绍了使用 Adam 优化器和二元交叉熵损失函数训练 Autoencoder 的方法,并提供了 Keras 和 PyTorch 的代码实现示例。
Keras 代码
# Adam 优化
# loss 函数为 二元交叉熵 binary_cross entropy
# 公式(14)
autoencoder.compile(optimizer=Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999,
epsilon=None, decay=0.0, amsgrad=False), loss='binary_crossentropy')
# 每次迭代 数据大小为128 迭代300次
# 在验证损失不再改善5个时期时停止训练 早期停止策略
autoencoder.fit(x_train, x_train, epochs=300, batch_size=128, shuffle=True,
validation_data=(x_test, x_test),callbacks=[EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=5)])
# 预测出的x特征
encoded_data_pre = encoder.predict(x)
storFile(encoded_data_pre, 'DCSLCS(Dataset1)(64dim).csv')
PyTorch 代码
# Adam 优化
# loss 函数为 二元交叉熵 binary_cross entropy
# 公式(14)
import torch.optim as optim
import torch.nn as nn
criterion = nn.BCELoss()
optimizer = optim.Adam(autoencoder.parameters(), lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)
# 每次迭代 数据大小为128 迭代300次
# 在验证损失不再改善5个时期时停止训练 早期停止策略
for epoch in range(300):
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = autoencoder(inputs)
loss = criterion(outputs, inputs)
loss.backward()
optimizer.step()
running_loss += loss.item()
if epoch % 10 == 9:
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 10))
running_loss = 0.0
if early_stopping and epoch > 5:
if val_loss[-1] > val_loss[-6]:
print("Early stopping. Validation loss did not improve for 5 consecutive epochs.")
break
# 预测出的x特征
encoded_data_pre = encoder(torch.from_numpy(x).float())
storFile(encoded_data_pre.detach().numpy(), 'DCSLCS(Dataset1)(64dim).csv')
总结
本文介绍了使用 Adam 优化器和二元交叉熵损失函数训练 Autoencoder 的方法,并提供了 Keras 和 PyTorch 的代码实现示例。通过使用早期停止策略可以有效地避免过拟合。最终预测的特征可以被保存为 CSV 文件,以便于后续分析。
原文地址: https://www.cveoy.top/t/topic/m3Qn 著作权归作者所有。请勿转载和采集!