在顺序模型中准备6个时间点的数据:Keras for R

时间:2019-03-04 14:01:57

标签: keras neural-network recurrent-neural-network keras-layer sequential

我有一个关于预处理数据的问题,以便将其输入到keras中用于R的顺序模型中。我需要确保输入对于该模型是正确的。顺序模型的目标是识别时程数据中的模式。这是基因组数据。看起来像这样:

                            t1    t2          t3        t4
ENSMUSG00000001525 3394.482292 1351.0510  302.62711  307.84582
ENSMUSG00000026211  195.055564  178.6283  117.26381   77.10679
ENSMUSG00000055653  110.148598  191.6431   45.99859   49.03902
ENSMUSG00000003038 2455.830408 1390.8977 1090.54737 1107.03441
ENSMUSG00000046434 1093.010618  796.3317  612.57043  710.67373
ENSMUSG00000026417    8.186694  130.4103  193.60001  317.17856 

再加上2个时间点,等等...行是基因。列是时间点。除此矩阵外,我还具有该矩阵的元数据,即有关此特定细胞类型的活跃程度的详细信息……原因是这是一个器官,我还有9个类似的数据框希望将其纳入模型并了解不同器官之间的关系,以及诸如细胞活性之类的因素如何在决定器官之间的共同变化中发挥作用(或没有)...我的顺序模型代码如下,我是按照在R中使用keras的顺序模型的教程进行操作,不过,我想确保将输入的数据作为20,000行(基因)和'从t1-t6查找模式...

countsorgan1
column_names <- colnames(countsorgan1)
train_df <- as_tibble(countsorgan1)
colnames(train_df) <- column_names

train_data <- scale(train_data) 
build_model <- function() {

  model <- keras_model_sequential() %>%
    layer_dense(units = 64, activation = "relu",
                input_shape = dim(test_data)[2]) %>%
    layer_dense(units = 64, activation = "relu") %>%
    layer_dense(units = 1)

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

  model
}

model <- build_model()
model %>% summary()

print_dot_callback <- callback_lambda(
  on_epoch_end = function(epoch, logs) {
    if (epoch %% 80 == 0) cat("\n")
    cat(".")
  }
)    

epochs <- 500

history <- model %>% fit(
  train1,
  epochs = epochs,
  validation_split = 0.2,
  verbose = 0,
  callbacks = list(print_dot_callback)
)

early_stop <- callback_early_stopping(monitor = "val_loss", patience = 20)

model <- build_model()
history <- model %>% fit(
  train_data,
  train_labels,
  epochs = epochs,
  validation_split = 0.2,
  verbose = 0,
  callbacks = list(early_stop, print_dot_callback)
)

我不确定这是否是我所问问题的正确输入。我不确定的一件事是“ train_labels”应该是什么,因此我无法运行模型,这是元数据吗?或感兴趣的行值?这段代码是否会寻找t1-t6的变化并确定可将测试数据传递给的模式?波士顿的数据集表明,也许我应该对这张桌子进行换位?

任何帮助或建议将不胜感激!

非常感谢!

0 个答案:

没有答案