создать обучающий набор тензорного потока на основе набора изображений с соответствующим текстовым файлом - PullRequest
0 голосов
/ 22 апреля 2020

Мои данные состоят из набора файлов png с соответствующим текстовым файлом (то же имя, другое расширение). Текстовый файл имеет разделенный запятыми формат, заголовок и содержит только двойные числа (. Как десятичный). Число строк данных (13) и столбцов (50) фиксировано.

Код для текстового файла возвращает RaggedTensor, в то время как модели требуется форма Tensor (13, 50). Как я могу получить это?

library(keras)
library(tfdatasets)
decode_img <- function(file_path) {
  file_path %>%
    tf$strings$regex_replace("csv", "png") %>%
    tf$io$read_file() %>%
    tf$image$decode_png(channels = 1) %>%
    tf$image$convert_image_dtype(dtype = tf$float32) %>%
    tf$image$transpose() %>%
    tf$reshape(c(416L, 156L))
}
decode_tsv <- function(file_path) {
  file_path %>%
    tf$io$read_file() %>%
    tf$strings$split(sep = "\n") %>%
    tf$gather(tf$range(0L, 14L)) %>%
    tf$strings$split(sep = ",") %>%
    tf$strings$to_number()
}
preprocess_path <- function(file_path) {
  list(
    decode_img(file_path),
    decode_tsv(file_path)
  )
}
train_stream_ds <- file_list_dataset(
  file_pattern = paste0(normalizePath(train_dir), "/*/*.csv")
) %>%
  dataset_map(
    preprocess_path,
    num_parallel_calls = tf$data$experimental$AUTOTUNE
  )
prepare <- function(ds, batch_size, shuffle_buffer_size) {
  if (shuffle_buffer_size > 0) {
    ds <- ds %>% dataset_shuffle(shuffle_buffer_size)
  }
  ds %>%
    dataset_batch(batch_size) %>%
    dataset_prefetch(buffer_size = tf$data$experimental$AUTOTUNE)
}
...