无法使用keras训练神经网络(R中)

时间:2020-01-09 09:11:15

标签: r tensorflow keras neural-network

我使用 R Keras 软件包制作了具有两个输入和一个输出的MLP。我的输出变量应该具有正值,因此我在输出层使用了 Relu 激活函数。即使为隐藏层神经元尝试了不同的值,我也无法训练网络。 relu 激活功能是否适合我的工作?还是应该使用其他任何网络结构? 我的数据集包含441个采样点,并且可以使用here

我的代码如下:

Keras_ANN<-function(x_tr,y_tr, N_input=2){
  require(keras)
  # x_tr <- scale(x_tr)
  model <- keras_model_sequential() 
  model %>% 
    layer_dense(units = 10, activation = 'tanh', input_shape = N_input) %>% 
    layer_dropout(rate = 0.2) %>%
    # layer_dense(units = 5) %>%
    layer_dense(units = 1, activation = "relu")

  model %>% compile(
    loss = "mse",
    optimizer = optimizer_rmsprop(),
    metrics = list("mean_absolute_error")
  )

  # Display training progress by printing a single dot for each completed epoch.
  print_dot_callback <- callback_lambda(
    on_epoch_end = function(epoch, logs) {
      if (epoch %% 80 == 0) cat("\n")
      cat(".")
    }
  )
  # 
  epochs <- 500

  # # Fit the model and store training stats

  # The patience parameter is the amount of epochs to check for improvement.
  early_stop <- callback_early_stopping(monitor = "val_loss", patience = 10)

  history <- model %>% fit(
    x_tr,
    y_tr,
    epochs = epochs,
    validation_split = 0.1,
    verbose = 0,
    callbacks = list(early_stop, print_dot_callback)
  )
  # plot(history, metrics = "mean_absolute_error", smooth = FALSE)
  return(model)
} 

  input<-as.matrix(Mydata[,1:2])
  target<-as.matrix(Mydata[,3])
  model<-Keras_ANN(input, target, N_input = 2)
  plot(target, model %>% predict(input))

0 个答案:

没有答案