Мои данные состоят из набора файлов 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)
}