R 为什么';这在凯拉斯不起作用吗?

R 为什么';这在凯拉斯不起作用吗?,r,deep-learning,keras,R,Deep Learning,Keras,我正在玩R中的玩具神经网络,试图学习keras语法。我对这个很陌生,所以觉得我可能错过了一些简单的东西 下面是我的X矩阵的前几行: train_x <- structure(c(619, 502, 699, 850, 645, 822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 42, 42, 39, 43, 44, 50, 2, 8, 1, 2, 8, 7, 0, 159660.8, 0, 125510.82, 113

我正在玩R中的玩具神经网络,试图学习
keras
语法。我对这个很陌生,所以觉得我可能错过了一些简单的东西

下面是我的X矩阵的前几行:

train_x <- structure(c(619, 502, 699, 850, 645, 822, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 42, 42, 39, 43, 44, 50, 2, 8, 
1, 2, 8, 7, 0, 159660.8, 0, 125510.82, 113755.78, 0, 1, 3, 2, 
1, 2, 2, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 101348.88, 113931.57, 
93826.63, 79084.1, 149756.71, 10062.8), .Dim = c(6L, 11L), .Dimnames = 
list(
c("1", "3", "4", "5", "6", "7"), c("CreditScore", "GeographyGermany", 
"GeographySpain", "GenderMale", "Age", "Tenure", "Balance", 
"NumOfProducts", "HasCrCard", "IsActiveMember", "EstimatedSalary"
)))

train_x我不得不承认我几乎不知道R。但是从你的代码来看,你似乎没有将你的数据标准化为0到1之间的值。谢谢@petezurich!分类变量是一个热编码的,删除了一个类,尽管在上面的例子中可能不明显。我试过在没有改变的情况下对连续变量进行规范化和不规范化。我对keras不太熟悉,但你似乎错过了最后的softmax激活层。你能试着用
层密度(单位=2,激活=softmax')替换1个单位层吗?
?因为您想在最后一层预测两个类。@DMU--谢谢您的建议。既然这是一个二进制分类问题(可能应该事先更清楚——对不起!),sigmoid不能用于最终激活层吗?
train_y <- c(1L, 1L, 0L, 0L, 1L, 0L)
class <- keras_model_sequential()

class %>%
layer_dense(units = 6, input_shape = 11, 
          activation = 'relu', 
          kernel_initializer = "uniform") %>%
  layer_dropout(0.2) %>%
  layer_dense(units = 6, 
          activation = 'relu', 
          kernel_initializer = 'uniform') %>%
  layer_dropout(0.2) %>%
  layer_dense(units = 1, activation = 'sigmoid',
          kernel_initializer = 'uniform')

class %>%
  compile(optimizer = 'adam', 
      loss = 'binary_crossentropy', 
      metrics = 'accuracy')
class %>%
  fit(train_x, train_y, batch_size = 10, 
  epochs = 10)

y_hat <- predict_classes(class, test_x)
table(y_hat)