我正在尝试在R的keras接口中训练带有MLP的二进制分类器。我编写了名为swish(x * sigmoid(alpha * x))的函数,但是我从损失函数中得到了NAN(我正在使用二进制交叉熵当然是用于二进制分类的)。 Swish在第一层也是唯一的隐藏层中,输出层具有S型激活。 alpha越小(摆动中的参数),则在模式历时之后(从模式开始),我得到的NAN就越少。
alpha = 0.5
swish = function(x){
x*sigmoid::sigmoid(alpha*x)
}
set.seed(60)
model_1HL <- keras_model_sequential()
model_1HL %>%
layer_dense(units = 40, activation = swish, input_shape = dim(X_train[2])) %>%
layer_dense(units = 1, activation = 'sigmoid')
model_1HL %>% compile(
loss = 'binary_crossentropy',
optimizer = optimizer_nadam(),
metrics = c('accuracy')
)
history_1HL<- model_1HL %>% fit(
X_train, y_train,
epochs = 300, batch_size = 60
)
score_final_1HL <- model_1HL %>% evaluate(X_test, y_test)
我的数据中没有任何NA,并且此体系结构可以正常工作,并且使用ReLu可以提供很好的准确性,而不是挥霍。