#tensorflow #input #dataset #pipeline
Вопрос:
Для обучения нейронной сети мы готовим набор данных с помощью TensorFlow, но каким-то образом при создании набора данных размер пакета не добавляется к набору данных.
def prepare_dataset(images, labels):
images_placeholder = tf1.compat.v1.placeholder(tf.float32, images.shape)
labels_placeholder = tf1.compat.v1.placeholder(tf.int64, labels.shape)
dataset = tf.data.Dataset.from_tensor_slices((images_placeholder, labels_placeholder))
print("tensor_slice", dataset)
dataset = dataset.shuffle(buffer_size=10000, seed=config['random_seed']).repeat()
if config['augment_dataset']:
dataset = dataset.map(
make_data_augmentation_fn(
standardization=config['augment_standardization'],
flip=config['augment_flip'],
padding=config['augment_padding'],
is_training=True))
dataset = dataset.batch(batch_size)
print("dataset: ", dataset)
iterator = tf.compat.v1.data.make_initializable_iterator(dataset)
print("what comes here!!",iterator)
return (images_placeholder, labels_placeholder), dataset, iteratorour
Вот выходные данные этого набора данных при добавлении пакета с ним. Значение пакета фиксировано и составляет 50. Результат следующий:
dataset: <BatchDataset shapes: ((?, 32, 32, 3), (?,)), types: (tf.float32, tf.int64)>
iterator_handle = tf1.compat.v1.placeholder(tf.string, shape=[])
print("iterator_handle: ",iterator_handle)
input_iterator = tf1.compat.v1.data.Iterator.from_string_handle(iterator_handle,
tf.compat.v1.data.get_output_types(clean_train_dataset_batched),
tf.compat.v1.data.get_output_shapes(clean_train_dataset_batched))
print("input_iterator",input_iterator)
x_input, y_input = input_iterator.get_next()
print(x_input, '', y_input)
Это x_input
будет передаваться в сеть, но на выходе получается следующее:
Tensor("IteratorGetNext:0", shape=(?, 32, 32, 3), dtype=float32)
Tensor("IteratorGetNext:1", shape=(?,), dtype=int64)