Я написал код, который разделяет 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.