R/createDenseNetModel.R
createDenseNetModel2D.Rd
Creates a keras model of the DenseNet deep learning architecture for image recognition based on the paper
createDenseNetModel2D( inputImageSize, numberOfClassificationLabels = 1000, numberOfFilters = 16, depth = 7, numberOfDenseBlocks = 1, growthRate = 12, dropoutRate = 0.2, weightDecay = 0.0001, mode = "classification" )
inputImageSize | Used for specifying the input tensor shape. The shape (or dimension) of that tensor is the image dimensions followed by the number of channels (e.g., red, green, and blue). The batch size (i.e., number of training images) is not specified a priori. |
---|---|
numberOfClassificationLabels | Number of segmentation labels. |
numberOfFilters | number of filters |
depth | number of layers---must be equal to 3 * N + 4 where N is an integer (default = 7). |
numberOfDenseBlocks | number of dense blocks to add to the end (default = 1). |
growthRate | number of filters to add for each dense block layer (default = 12). |
dropoutRate | = per drop out layer rate (default = 0.2). |
weightDecay | = weight decay (default = 1e-4). |
mode | 'classification' or 'regression'. Default = 'classification'. |
an DenseNet keras model
G. Huang, Z. Liu, K. Weinberger, and L. van der Maaten. Densely Connected Convolutional Networks Networks
available here:
https://arxiv.org/abs/1608.06993
This particular implementation was influenced by the following python implementation:
https://github.com/tdeboissiere/DeepLearningImplementations/blob/master/DenseNet/densenet.py
Tustison NJ
#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not existnumberOfLabels <- 10 # Extract a small subset for something that can run quickly X_trainSmall <- mnistData$train$x[1:100,,]#> Error in eval(expr, envir, enclos): object 'mnistData' not found#> Error in array(data = X_trainSmall, dim = c(dim(X_trainSmall), 1)): object 'X_trainSmall' not found#> Error in to_categorical(mnistData$train$y[1:100], numberOfLabels): object 'mnistData' not foundX_testSmall <- mnistData$test$x[1:10,,]#> Error in eval(expr, envir, enclos): object 'mnistData' not found#> Error in array(data = X_testSmall, dim = c(dim(X_testSmall), 1)): object 'X_testSmall' not found#> Error in to_categorical(mnistData$test$y[1:10], numberOfLabels): object 'mnistData' not found# We add a dimension of 1 to specify the channel size inputImageSize <- c( dim( X_trainSmall )[2:3], 1 )#> Error in eval(expr, envir, enclos): object 'X_trainSmall' not foundmodel <- createDenseNetModel2D( inputImageSize = inputImageSize, numberOfClassificationLabels = numberOfLabels )#> Error in py_discover_config(required_module, use_environment): Python specified in RETICULATE_PYTHON (/Users/ntustison/anaconda3/envs/antsx/bin/python3) does not existmodel %>% compile( loss = 'categorical_crossentropy', optimizer = optimizer_adam( lr = 0.0001 ), metrics = c( 'categorical_crossentropy', 'accuracy' ) )#> Error in compile(., loss = "categorical_crossentropy", optimizer = optimizer_adam(lr = 1e-04), metrics = c("categorical_crossentropy", "accuracy")): object 'model' not found# Comment out the rest due to travis build constraints # track <- model %>% fit( X_trainSmall, Y_trainSmall, verbose = 1, # epochs = 1, batch_size = 2, shuffle = TRUE, validation_split = 0.5 ) # Now test the model # testingMetrics <- model %>% evaluate( X_testSmall, Y_testSmall ) # predictedData <- model %>% predict( X_testSmall, verbose = 1 )