Tensorflow Нет в размере набора данных - PullRequest
0 голосов
/ 13 октября 2019

Я использую API набора данных и получаю неожиданные значения None в форме набора данных.

import tensorflow as tf
import os

def load_seti_dataset(path):
    with open(path) as f:
        dataset_file = f.read().splitlines()
    data = tf.data.Dataset.from_tensor_slices(dataset_file)
    data = data.repeat()
    data = data.shuffle(buffer_size=1000)
    data = data.map(parse_records, num_parallel_calls=4)
    data = data.batch(batch_size=2)
    data = data.prefetch(buffer_size=1)
    return data

def load_image(path):
    image = tf.io.read_file(path)
    image = tf.io.decode_png(image, channels=3)
    image = tf.image.resize(image, [512, 384])
    image = 1. - image / 127.5
    return image

def parse_records(line):
    image_path, image_label = tf.io.decode_csv(line, ["", 0])
    image = load_image(image_path)
    return image, image_label

data = load_seti_dataset("test_data.csv")
print(data)

test_data.csv - это просто CSV с путем к изображению и меткой. Изображения, которые я читаю, имеют размер 512х384 с 3 каналами. Каждая метка представляет собой просто скалярное значение.

При печати data выводятся следующие размеры:

<PrefetchDataset shapes: ((None, 512, 384, 3), (None,)), types: (tf.float32, tf.int32)>

Что бы я ожидал:

<PrefetchDataset shapes: ((512, 384, 3), (1,)), types: (tf.float32, tf.int32)>

Почему в каждом измерении в пакете отсутствуют значения None? Почему второе значение в пакете не просто скаляр?

...