数据科学与R语言R语言学习数据-R语言-图表-决策-Linux-Python

深度学习实现多分类

2018-02-20  本文已影响220人  Liam_ml

利用R语言深度学习框架实现多分类。写这篇博客的意义在于,多分类问题都可以用这篇文章中的代码进行实现

library(keras)

# generate dummy data
x_train <- matrix(runif(1000*20), nrow = 1000, ncol = 20)

y_train <- runif(1000, min = 0, max = 9) %>% 
  round() %>%
  matrix(nrow = 1000, ncol = 1) %>% 
  to_categorical(num_classes = 10)

x_test  <- matrix(runif(100*20), nrow = 100, ncol = 20)

y_test <- runif(100, min = 0, max = 9) %>% 
  round() %>%
  matrix(nrow = 100, ncol = 1) %>% 
  to_categorical(num_classes = 10)

# create model
model <- keras_model_sequential()

# define and compile the model
model %>% 
  layer_dense(units = 64, activation = 'relu', input_shape = c(20)) %>% 
  layer_dropout(rate = 0.5) %>% 
  layer_dense(units = 64, activation = 'relu') %>% 
  layer_dropout(rate = 0.5) %>% 
  layer_dense(units = 10, activation = 'softmax') %>% 
  compile(
    loss = 'categorical_crossentropy',
    optimizer = optimizer_sgd(lr = 0.01, decay = 1e-6, momentum = 0.9, nesterov = TRUE),
    metrics = c('accuracy')     
  )

# train
model %>% fit(x_train, y_train, epochs = 20, batch_size = 128)

# evaluate
score <- model %>% evaluate(x_test, y_test, batch_size = 128)

p <- model %>% predict_classes(x_test)

这里有几点说明:

  1. 在R语言深度学习框架中,二维数据结构全部用矩阵。
  2. 要对离散变量进行重编码
  3. 本文的数据全部是随机生成的

深度学习的构建有几个关键点:

  1. 定义网络结构,有多少的输入,节点有多少个,有多少层,用什么激活函数,这些对于不同的数据有不同的答案,目前用于机器学习的领域图像,音频,对应的是三维数据,四维数据,不同的数据类型对网络的定义是不同的。
  2. 编译模型,模型的结构定义好了之后,就需要进行求解参数,这包括定义损失函数,定义最优化的方法,定义评判标准。
  3. 训练模型
上一篇下一篇

猜你喜欢

热点阅读