inception-V3 зависает на последнем пакете первой эпохи (не может перейти на вторую эпоху) в Rstudio - PullRequest
0 голосов
/ 16 июня 2020

Я написал код, который разделяет 4 класса через изображение. Однако при обучении первая эпоха остановилась.

Пожалуйста, помогите мне.

## 1. Data preparation

setwd("F:/S2A_v3")



### 1.1. Renaming files and creating folders structure
# Class labels
labels <- read.table("data/train_labels.csv",
                     header = TRUE, 
                     sep = ",")
labels$invasive_f <- factor(labels$class, 
                            levels = c(0, 1, 2, 3),
                            labels = c("vegetation", "land","water","snow"))

### 1.2. Settings

img_height <- 150
img_width <- 150
batch_size <- 16
epochs <- 2
train_samples = 3416
validation_samples = 300
test_samples = 3471


## 2. Model training


### 2.1. Data generators & augmentation
datagen <- image_data_generator(
  rotation_range = 20,
  width_shift_range = 0.2,
  height_shift_range = 0.2,
  horizontal_flip = TRUE
)


train_generator <- flow_images_from_directory(
  train_directory, 
  generator = datagen,
  target_size = c(img_height, img_width),
  color_mode = "rgb",
  class_mode = "categorical", 
  batch_size = batch_size, 
  shuffle = TRUE,
  seed = 123)

validation_generator <- flow_images_from_directory(
  validation_directory, 
  generator = datagen,
  target_size = c(img_height, img_width), 
  color_mode = "rgb", 
  classes = NULL,
  class_mode = "categorical", 
  batch_size = batch_size, 
  shuffle = TRUE,
  seed = 123)
### 2.2. Loading pre-trained model and adding custom layers 

base_model <- application_inception_v3(weights = "imagenet", 
                                       include_top = FALSE,
                                       input_shape = c(img_height, img_width, 3))

# Custom layers
predictions <- base_model$output %>% 
  layer_global_average_pooling_2d() %>% 
  layer_dense(units = 1024, activation = "relu") %>% 
  layer_dense(units = 4, activation = "sigmoid")

model <- keras_model(inputs = base_model$input, 
                     outputs = predictions)

model %>% compile(
  loss = "categorical_crossentropy",
  optimizer = optimizer_sgd(lr = 0.0001, 
                            momentum = 0.9, 
                            decay = 1e-5),
  metrics = "accuracy"
)

### 2.3. Training
#solved errors, need conda version check
#reticulate::py_install("pillow",env=tf)
tensorboard("logs/inception3")

model %>% fit_generator(
  train_generator,
  steps_per_epoch = train_samples / batch_size, 
  epochs = epochs, 
  validation_data = validation_generator,
  validation_steps = validation_samples / batch_size,
  verbose = 1,
  workers=1


)

save_model_hdf5(model, "models/inception3_3epochs.h5")

Кто-то сказал, что есть проблема с версиями keras и tensorflow. Кроме того, есть проблема с генератором, но все это было решением для среды Python.

Версия, которую я пытаюсь использовать keras 2.3.0 Tensorflow 2.2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...