Поиск…


параметры

параметр подробности
тип данных (dtype) в частности, одного из типов данных, предоставляемых пакетом тензорного потока. Например, tensorflow.float32
форма данных (форма) Размеры заполнителя в виде списка или кортежа. None может использоваться для неизвестных размеров. Например (Нет, 30) определит метку размера (? X 30)
имя (имя) Имя операции (необязательно).

Основы заполнителей

Заполнители позволяют вводить значения в график тензорного потока. Кроме того, они позволяют указывать ограничения, касающиеся размеров и типа данных, которые подаются. В этом они полезны при создании нейронной сети для подачи новых примеров обучения.

В следующем примере объявляется местозаполнитель для тензора 3 х 4 с элементами, которые (или могут быть введены к 32-битным поплавкам).

a = tf.placeholder(tf.float32, shape=[3,4], name='a')

Заполнитель не будет содержать никаких значений самостоятельно, поэтому важно, чтобы они загружали значения при запуске сеанса, иначе вы получите сообщение об ошибке. Это можно сделать, используя аргумент feed_dict при вызове session.run() , например:

# run the graph up to node b, feeding the placeholder `a` with values in my_array 
session.run(b, feed_dict={a: my_array})

Вот простой пример, показывающий весь процесс декларирования и кормления.

import tensorflow as tf
import numpy as np

# Build a graph
graph = tf.Graph()
with graph.as_default():
    # declare a placeholder that is 3 by 4 of type float32
    a = tf.placeholder(tf.float32, shape=(3, 4), name='a')
    
    # Perform some operation on the placeholder
    b = a * 2
    
# Create an array to be fed to `a`
input_array = np.ones((3,4))

# Create a session, and run the graph
with tf.Session(graph=graph) as session:
    # run the session up to node b, feeding an array of values into a
    output = session.run(b, feed_dict={a: input_array})
    print(output)

Заполнитель принимает массив из 3 на 4, и тогда тензор умножается на 2 в узле b, после чего возвращается и выводит следующее:

[[ 2.  2.  2.  2.]
 [ 2.  2.  2.  2.]
 [ 2.  2.  2.  2.]]

Заполнитель по умолчанию

Часто хочется периодически запускать одну или несколько партий валидации в ходе обучения в глубокой сети. Обычно обучающие данные подаются по очереди , пока данные проверки могут быть переданы через feed_dict параметра в sess.run() . tf.placeholder_with_default() призван хорошо работать в этой ситуации:

import numpy as np
import tensorflow as tf

IMG_SIZE = [3, 3]
BATCH_SIZE_TRAIN = 2
BATCH_SIZE_VAL = 1

def get_training_batch(batch_size):
    ''' training data pipeline '''
    image = tf.random_uniform(shape=IMG_SIZE)
    label = tf.random_uniform(shape=[])
    min_after_dequeue = 100
    capacity = min_after_dequeue + 3 * batch_size
    images, labels = tf.train.shuffle_batch(
        [image, label], batch_size=batch_size, capacity=capacity,
        min_after_dequeue=min_after_dequeue)
    return images, labels

# define the graph
images_train, labels_train = get_training_batch(BATCH_SIZE_TRAIN)
image_batch = tf.placeholder_with_default(images_train, shape=None)
label_batch = tf.placeholder_with_default(labels_train, shape=None)
new_images = tf.mul(image_batch, -1)
new_labels = tf.mul(label_batch, -1)

# start a session
with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)

    # typical training step where batch data are drawn from the training queue
    py_images, py_labels = sess.run([new_images, new_labels])
    print('Data from queue:')
    print('Images: ', py_images)  # returned values in range [-1.0, 0.0]
    print('\nLabels: ', py_labels) # returned values [-1, 0.0]

    # typical validation step where batch data are supplied through feed_dict
    images_val = np.random.randint(0, 100, size=np.hstack((BATCH_SIZE_VAL, IMG_SIZE)))
    labels_val = np.ones(BATCH_SIZE_VAL)
    py_images, py_labels = sess.run([new_images, new_labels],
                      feed_dict={image_batch:images_val, label_batch:labels_val})
    print('\n\nData from feed_dict:')
    print('Images: ', py_images) # returned values are integers in range [-100.0, 0.0]
    print('\nLabels: ', py_labels) # returned values are -1.0

    coord.request_stop()
    coord.join(threads)

В этом примере image_batch и label_batch генерируются get_training_batch() если соответствующие значения не передаются как параметр feed_dict во время вызова sess.run() .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow