rm(list=ls())

x_files <- list.files(path="C:/Users/gerhard/Documents/msc-thesis-data/", pattern="x*.rdata", full.names=T, recursive=F)

y_files <- list.files(path="C:/Users/gerhard/Documents/msc-thesis-data/", pattern="y*.rdata", full.names=T, recursive=F)

for(i in x_files){
  load(i)
}

for(i in y_files){
  load(i)
}

require(abind)

x <- abind(x_265309,x_265332,x_265334,x_265335,x_265336,x_265338,x_265339,x_265342,x_265343,x_265344,x_265377,x_265378,x_265381,x_265383,x_265385,x_265388,x_265419,x_265420,x_265425,x_265426,x_265499,along=1)

rm(x_265309,x_265332,x_265334,x_265335,x_265336,x_265338,x_265339,x_265342,x_265343,x_265344,x_265377,x_265378,x_265381,x_265383,x_265385,x_265388,x_265419,x_265420,x_265425,x_265426,x_265499)

y <- c(y_265309,y_265332,y_265334,y_265335,y_265336,y_265338,y_265339,y_265342,y_265343,y_265344,y_265377,y_265378,y_265381,y_265383,y_265385,y_265388,y_265419,y_265420,y_265425,y_265426,y_265499)

rm(y_265309,y_265332,y_265334,y_265335,y_265336,y_265338,y_265339,y_265342,y_265343,y_265344,y_265377,y_265378,y_265381,y_265383,y_265385,y_265388,y_265419,y_265420,y_265425,y_265426,y_265499)

rm(x_files,y_files,i)

dim(x) <- c(dim(x)[1],dim(x)[3],dim(x)[2])

dim(x)
## [1] 1207180      24      17
require(keras)

y <- to_categorical(y)

train_ind <- sample(1:nrow(y),size = round(nrow(y)*.75))
test_ind <- 1:nrow(y)
test_ind <- test_ind[-train_ind]

x_train <- x[train_ind,,]
x_test <- x[test_ind,,]


y_train <- y[train_ind,]
y_test <- y[test_ind,]

rm(x,y,train_ind,test_ind)

dim(x_train) <- c(dim(x_train),1)
dim(x_test) <- c(dim(x_test),1)
rm(model1)

model1 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(4,4),input_shape = c(17,24,1),
                activation = "relu",data_format = "channels_last") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3)) %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_flatten() %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model1 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9,nesterov = T,decay = 1e-6),
    metrics="acc"
    
  )
  
history <- model1 %>%
  fit(x_train,
      y_train,
      batch_size=1,
      verbose=2,
      epochs=10,
      validation_split=0.2)

rm( model2)
model2 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "relu",data_format = "channels_last") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="relu") %>%
  # layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="relu") %>%
  layer_conv_2d(filters=128,kernel_size = c(2,2),activation="relu") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model2 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(),
    metrics="acc"
    
  )
  
history <- model2 %>%
  fit(x_train,
      y_train,
      batch_size=10000,
      verbose=2,
      epochs=10,
      validation_split=0.2)

rm( model3)
model3 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "relu",data_format = "channels_last",padding = "same") #%>%

summary(model3)

model3 <- model3 %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="relu",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) #

summary(model3)

model3 <- model3 %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="relu",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) #%>%

summary(model3)

model3 <- model3 %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="relu",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) 

summary(model3)

model3 <- model3 %>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model3 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(),
    metrics="acc"
    
  )
  
history <- model3 %>%
  fit(x_train,
      y_train,
      batch_size=100000,
      verbose=2,
      epochs=10,
      validation_split=0.2)

rm( model3)
model4 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding = "same") %>%
  layer_max_pooling_2d(c(2,2))%>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model4 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.95),
    metrics="acc"
    
  )
  
history <- model4 %>%
  fit(x_train,
      y_train,
      batch_size=1000,
      verbose=2,
      epochs=20,
      validation_split=0.2)

rm( model5)
model5 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding = "same") %>%
  layer_max_pooling_2d(c(2,2))%>%
  layer_flatten() %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "tanh") %>%
  layer_dense(512,activation = "hard_sigmoid") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model5 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.95),
    metrics="acc"
    
  )
  
history <- model5 %>%
  fit(x_train,
      y_train,
      batch_size=500,
      verbose=2,
      epochs=50,
      validation_split=0.2)

rm( model5)
model6 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding = "same") %>%
  layer_max_pooling_2d(c(2,2))%>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model6 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.95,lr=0.009),
    metrics="acc"
    
  )
  
history <- model6 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=20,
      validation_split=0.2)

rm( model6)
model7 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=128,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=256,kernel_size = c(3,3),activation="tanh",padding = "same") %>%
  layer_max_pooling_2d(c(2,2))%>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model7 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.99),
    metrics="acc"
    
  )
  
history <- model7 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=20,
      validation_split=0.2)

model8 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model8 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model8 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=20,
      validation_split=0.2)

model9 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_flatten() %>%
  layer_dense(256,activation = "tanh") %>%
  layer_dense(128,activation = "elu") %>%
  layer_dense(128,activation = "elu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model9 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_adadelta(),
    #optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model9 %>%
  fit(x_train,
      y_train,
      batch_size=16,
      verbose=2,
      epochs=100,
      validation_split=0.2)

model10 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model10 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model10 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=100,
      validation_split=0.2)

model11 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(2,activation = "softmax")

model11 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model11 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

model12 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(512,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(2,activation = "softmax")

model12 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.99,lr=0.001,nesterov = T),
    metrics="acc"
    
  )
  
history <- model12 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=20,
      validation_split=0.2)

model13 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(512,activation = "tanh",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(256,activation = "relu",regularizer_l2()) %>%
  layer_dense(2,activation = "softmax")

model13 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model13 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=20,
      validation_split=0.2)

model14 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(1024,activation = "relu") %>%
  layer_dense(512,activation = "relu") %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model14 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_nadam(),
    metrics="acc"
    
  )
  
history <- model14 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

model15 <- keras_model_sequential() %>%
  layer_conv_2d(filters = 32,kernel_size = c(3,3),input_shape = c(17,24,1),
                activation = "tanh",data_format = "channels_last",padding = "same") %>%
  layer_max_pooling_2d(c(2,2)) %>%
  layer_conv_2d(filters=64,kernel_size = c(3,3),activation="tanh",padding="same") %>%
  layer_max_pooling_2d(c(2,2))  %>%
  layer_flatten() %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(64,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model15 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model15 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

dim(x_train) <- dim(x_train)[1:3]
dim(x_test) <- dim(x_test)[1:3]

model16 <- keras_model_sequential() %>%
  layer_lstm(units = 128,return_sequences = T,go_backwards = F,input_shape = c(24,17))

summary(model16)

model16 <- model16 %>%
  layer_lstm(units = 128,return_sequences = F,go_backwards = T)

summary(model16)

model16 <- model16 %>%
  layer_dense(256,activation = "relu") %>%
  layer_dense(128,activation = "relu") %>%
  layer_dense(2,activation = "softmax")

model16 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.99),
    metrics="acc"
    
  )
  
history <- model16 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

dim(x_train) <- dim(x_train)[1:3]
dim(x_test) <- dim(x_test)[1:3]

model17 <- keras_model_sequential() %>%
  layer_lstm(units = 128,return_sequences = F,go_backwards = F,input_shape = c(24,17)) %>%
  # layer_conv_2d(filters = 32,kernel_size = c(3,3)) %>%
  # layer_max_pooling_2d(c(2,2)) %>%
  # layer_flatten()
  layer_dense(128,activation = "tanh") %>%
  layer_dense(128,activation = "tanh") %>%
  layer_dense(2,activation = "softmax")

model17 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model17 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

dim(x_train) <- dim(x_train)[1:3]
dim(x_test) <- dim(x_test)[1:3]

model18 <- keras_model_sequential() %>%
  layer_lstm(units = 128,return_sequences = T,go_backwards = F,input_shape = c(24,17)) %>%
  layer_lstm(units = 128, return_sequences = F,go_backwards = T) %>%
  # layer_conv_2d(filters = 32,kernel_size = c(3,3)) %>%
  # layer_max_pooling_2d(c(2,2)) %>%
  # layer_flatten()
  layer_dense(128,activation = "tanh") %>%
  layer_dense(128,activation = "tanh") %>%
  layer_dense(2,activation = "softmax")

model18 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model18 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)

dim(x_train) <- dim(x_train)[1:3]
dim(x_test) <- dim(x_test)[1:3]

model19 <- keras_model_sequential() %>%
  layer_lstm(units = 256,return_sequences = T,go_backwards = F,input_shape = c(24,17)) %>%
  layer_lstm(units = 256, return_sequences = T,go_backwards = T) %>%
  layer_lstm(units = 128,return_sequences = T,go_backwards = F) %>%
  layer_lstm(units = 128, return_sequences = F,go_backwards = T) %>%
  # layer_conv_2d(filters = 32,kernel_size = c(3,3)) %>%
  # layer_max_pooling_2d(c(2,2)) %>%
  # layer_flatten()
  layer_dense(200,activation = "tanh") %>%
  layer_dense(200,activation = "tanh") %>%
  layer_dense(2,activation = "softmax")

model19 %>%
  compile(
    loss="categorical_crossentropy",
    optimizer_sgd(momentum = 0.9),
    metrics="acc"
    
  )
  
history <- model19 %>%
  fit(x_train,
      y_train,
      batch_size=32,
      verbose=2,
      epochs=50,
      validation_split=0.2)