TensorFlowにおけるバリデーションの方法がわかりません.
ここではIRISデータを学習することを考えます.

現在組んでいるプログラムは大まかに以下です.

import tensorflow as tf

labels = get_labels(dataset) #データ取得
data = get_data(dataset) #ラベル取得

train_data, test_data, valid_data = divide_data(data) #データ分割
train_labels, test_labels, valid_labels = divide_labels(labels) #ラベル分割

ph_data = tf.placeholder(tf.float32, shape=(None,4)) #データ用PlaceHolder
ph_labels = tf.placeholder(tf.float32, shape=(None,3)) #ラベル用PlaceHolder

#隠れ層のノード数
node_num = 1024

# 隠れ層定義
w_hidden = tf.Variable(tf.truncated_normal([4,node_num]))
b_hidden = tf.Variable(tf.zeros([node_num]))
f_hidden = tf.matmul(X, w_hidden) + b_hidden
hidden_layer = tf.nn.relu(f_hidden)

# 出力層定義
w_output = tf.Variable(tf.zeros([node_num,3]))
b_output = tf.Variable(tf.zeros([3]))
f_output = tf.matmul(hidden_layer, w_output) + b_output
out = tf.nn.softmax(f_output)

cross_entropy = t * tf.log(out) #交差エントロピー
loss = -tf.reduce_mean(cross_entropy) #誤差関数
optimizer = tf.train.AdamOptimizer() #最適化アルゴリズム
train_step = optimizer.minimize(loss) #lossを最小化

correct_pred = tf.equal(tf.argmax(out, 1), tf.argmax(ph_labels, 1)) #答え合わせ
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) #正解率


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    i = 0
    for _ in range(2000):
        i += 1
        # トレーニング
        sess.run(train_step, feed_dict={ph_data:train_data, ph_labels:train_labels})
        # 200ステップごとに精度を出力
        if i % 200 == 0:
            # コストと精度を出力
            train_loss, train_acc = sess.run([loss, accuracy], feed_dict={ph_data:test_data, ph_labels:test_labels})
            print("Step: %d" % i)
            print("[Train] cost: %f, acc: %f" % (train_loss, train_acc))

私の認識では,
sess.run(train_step, feed_dict={...})でトレーニングを行い,
train_data内での精度を見て,パラメータ調整をおこなっている(?)のではと思っております.
また同時に,train_loss, train_acc = sess.run(...)は学習したモデルの損失と正解率を算出しているだけで,パラメータ調整には影響していないのかなと.

上記の場合,汎化能力や過学習への対応ができないため,「バリデーションを行うべき」と多く目にします.
しかし,valid_dataをどのように入力すればvalid_dataによるパラメータ調整ができるのかがわかりません.

不勉強で申し訳ないですが,どうかお願いします.