サーチ…


パラメーター

パラメータ詳細
データ型(dtype) 特にテンソルフローパッケージによって提供されるデータ型の1つ。例: tensorflow.float32
データ形状(形状) リストまたはタプルとしてのプレースホルダの寸法。不明なディメンションには、 Noneも使用できNone 。例えば、(None、30)は、(?x 30)次元のプレースホルダ
名前(名前) 操作の名前(オプション)。

プレースホルダの基本

プレースホルダを使用すると、テンソルフローグラフに値を入力できます。 Additionallyこれらは、入力される値の次元とデータ型に関する制約を指定することができます。そのように、新しいトレーニング例を提供するニューラルネットワークを作成するときに便利です。

次の例では、32ビット浮動小数点型の要素を持つ3×4テンソルのプレースホルダを宣言しています。

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

プレースホルダには値は含まれないため、セッションを実行するときに値を入力する必要があります。そうしないと、エラーメッセージが表示されます。これは、 session.run()呼び出すときにfeed_dict引数を使用して行うことができます。例:

# 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列の配列をとり、ノードbでテンソルに2を掛け、次の結果を返して出力します。

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

デフォルトのプレースホルダ

深いネットワークをトレーニングする過程で、1つまたは複数の検証バッチを間欠的に実行することがよくあります。通常、訓練データはキューによって供給され、検証データはsess.run() feed_dictパラメータを通過することが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