수색…


매개 변수

매개 변수 세부
데이터 유형 (dtype) 특히 tensorflow 패키지가 제공하는 데이터 유형 중 하나. 예 : tensorflow.float32
데이터 모양 (모양) 자리 표시 자의 크기를 목록 또는 튜플로 나타냅니다. 알 수없는 치수에는 None 사용할 수 있습니다. 예를 들어 (없음, 30)은 (? x 30) 차원 자리 표시자를 정의합니다
이름 (이름) 작업의 이름입니다 (선택 사항).

자리 표시 자 기본 사항

자리 표시 자를 사용하면 텐센트 흐름 그래프에 값을 입력 할 수 있습니다. Aditionally이 옵션을 사용하면 입력되는 값의 차원과 데이터 유형에 대한 제약 조건을 지정할 수 있습니다. 따라서 새 훈련 예제를 제공 할 신경망을 만들 때 유용합니다.

다음 예제에서는 32 비트 부동 소수점에있는 요소를 사용하여 3x4 텐서의 자리 표시자를 선언합니다.

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

자리 표시자는 자체적으로 값을 포함하지 않으므로 세션을 실행할 때 값을 제공하는 것이 중요합니다. 그렇지 않으면 오류 메시지가 표시됩니다. 이 작업은 session.run() 호출 할 때 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)

placeholder는 1의 3 x 4 배열을 취하고 노드 b에서 텐서에 2를 곱한 다음 다음을 반환하고 출력합니다.

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

기본값이있는 자리 표시 자

하나는 종종 깊은 네트워크를 교육하는 과정에서 하나 이상의 유효성 검사 배치를 간헐적으로 실행하려고합니다. 일반적으로 학습 데이터는 대기열에 의해 공급되는 반면 유효성 검증 데이터는 sess.run()feed_dict 매개 변수를 통해 전달 될 수 있습니다. 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_batchlabel_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