{"cells":[{"metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":true},"cell_type":"code","source":"## Importing packages\nlibrary(tidyverse)\nlibrary(neuralnet)\nlibrary(imager)\nlibrary(wvtool)\nlibrary(keras)\nlibrary(Metrics)\n\ntest <- read.csv(\"../input/aptos2019-blindness-detection/test.csv\", stringsAsFactors = F)\ntrain <- read.csv(\"../input/aptos2019-blindness-detection/train.csv\", stringsAsFactors = F)\n\ntrain$diagnosis[train$diagnosis > 0] <- 1\n\nprint(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_image_files_path <- \"../input/aptos2019-blindness-detection/\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"answer_list <- c(\"test_images\", \"train_images\")\noutput_n <- length(answer_list)\nimg_width <- 20\nimg_height <- 20\ntarget_size <- c(img_width, img_height)\nchannels <- 3\n\n\n# red neuronal simple\n#nn <- neuralnet(f,\n #               data = train,\n  #              hidden = c(13, 10, 3),\n   #             act.fct = \"logistic\",\n    #            linear.output = FALSE,\n     #           lifesign = \"minimal\")\n\n# training images\ntrain_data_gen = image_data_generator(\n  rescale = 1/255 #,\n  #rotation_range = 40,\n  #width_shift_range = 0.2,\n  #height_shift_range = 0.2,\n  #shear_range = 0.2,\n  #zoom_range = 0.2,\n  #horizontal_flip = TRUE,\n  #fill_mode = \"nearest\"\n)\n\nvalid_data_gen <- image_data_generator(\n  rescale = 1/255\n  )  \ntrain_image_array_gen <- flow_images_from_directory(train_image_files_path, \n                                          train_data_gen,\n                                          target_size = target_size,\n                                          class_mode = \"categorical\",\n                                          classes = answer_list,\n                                          seed = 42)\n\n# validation images\nvalid_image_array_gen <- flow_images_from_directory(train_image_files_path, \n                                          valid_data_gen,\n                                          target_size = target_size,\n                                          class_mode = \"categorical\",\n                                          classes = answer_list,\n                                          seed = 42)\n\ncat(\"Number of images per class:\")\ntable(factor(train_image_array_gen$classes))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# number of training samples\nset.seed(123)\ntrain_samples <- sample(train_image_array_gen$n,1)\n# number of validation samples\nvalid_samples <- sample(valid_image_array_gen$n,1)\n\n# define batch size and number of epochs\nbatch_size <- 1\nepochs <- 1\n\n# initialise model\nmodel <- keras_model_sequential()\n\n# add layers\nmodel %>%\n  layer_conv_2d(filter = 32, kernel_size = c(3,3), padding = \"same\", input_shape = c(img_width, img_height, channels)) %>%\n  layer_activation(\"relu\") %>%\n  \n  # Second hidden layer\n  #layer_conv_2d(filter = 16, kernel_size = c(3,3), padding = \"same\") %>%\n  #layer_activation_leaky_relu(0.5) %>%\n  #layer_batch_normalization() %>%\n\n  # Use max pooling\n  #layer_max_pooling_2d(pool_size = c(2,2)) %>%\n  #layer_dropout(0.25) %>%\n  \n  # Flatten max filtered output into feature vector \n  # and feed into dense layer\n  layer_flatten() %>%\n  layer_dense(100) %>%\n  layer_activation(\"relu\") %>%\n  layer_dropout(0.5) %>%\n\n  # Outputs from dense layer are projected onto output layer\n  layer_dense(output_n) %>% \n  layer_activation(\"softmax\")\n\n# compile\nmodel %>% compile(\n  loss = \"categorical_crossentropy\",\n  optimizer = optimizer_rmsprop(lr = 0.0001, decay = 1e-6),\n  metrics = \"accuracy\"\n)\n\n# fit\n#hist <- model %>% fit_generator(\n  # training data\n  #train_image_array_gen,\n  \n  # epochs\n  #steps_per_epoch = as.integer(train_samples / batch_size), \n  #epochs = epochs, \n  \n  # validation data\n  #validation_data = valid_image_array_gen,\n # validation_steps = as.integer(valid_samples / batch_size),\n  \n  # print progress\n # verbose = 2\n\n#)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"set.seed(123)\ntrain_samples <- sample(train_image_array_gen$n,1)\n# number of validation samples\nvalid_samples <- sample(valid_image_array_gen$n,1)\n\ntrain_results <- sample(train$diagnosis, 1)\n\ntrain_results$samples <- train_samples\ntrain_results$results <- train_resultss\ntrain_results$samples\ntrain_results$results\n#Neural Network\nnn <- neuralnet(samples ~ results, data=train_results, hidden=c(2,1), linear.output=FALSE, threshold=0.01)\nnn$result.matrix\nplot(nn)\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}