7
我使用TensorFlow創建了一個具有金字塔結構的隱藏層神經網絡。下面是代碼:使用TensorFlow進行驗證和測試
num_classes = 10
image_size = 28
#Read the data
train_dataset, train_labels, valid_dataset, valid_labels, test_dataset, test_labels = OpenDataSets("...")
#Create and convert what is needed.
tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size * image_size))
tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
tf_valid_dataset = tf.constant(valid_dataset)
tf_test_dataset = tf.constant(test_dataset)
#Then I create the NN.
Wh = tf.Variable(tf.truncated_normal([image_size * image_size, image_size * image_size/2]))
bh = tf.Variable(tf.truncated_normal([image_size * image_size/2]))
hidden = tf.nn.relu(tf.matmul(tf_train_dataset, Wh) + bh)
Wout = tf.Variable(tf.truncated_normal([image_size * image_size/2, num_labels]))
bout = tf.Variable(tf.truncated_normal([num_labels]))
logits = tf.nn.relu(tf.matmul(hidden, Wout) + bout)
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, tf_train_labels))
optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
train_prediction = tf.nn.softmax(logits)
現在我訓練我的NN:
with tf.Session(graph=graph) as session:
tf.initialize_all_variables().run()
for step in range(1000):
offset = (step * batch_size) % (train_labels.shape[0] - batch_size)
batch_data = train_dataset[offset:(offset + batch_size), :]
batch_labels = train_labels[offset:(offset + batch_size), :]
feed_dict = {tf_train_dataset : batch_data, tf_train_labels : batch_labels}
_, l, predictions = session.run([optimizer, loss, train_prediction], feed_dict=feed_dict)
現在我想驗證和培訓後測試我的NN。但我不知道如何創建新的feed_dict並使用session.run來驗證/測試。
感謝您的幫助!
非常感謝您的回答。所以,如果我理解正確,我必須創建另外兩個NN,這些NN實際上是指向我的原始NN的指針,因爲它們使用完全相同的可訓練權重。我對嗎? – FiReTiTi
我希望使用我的原始NN具有不同的輸入。 – FiReTiTi
否否,您將使用完全相同的網絡進行驗證 - 只需在同一網絡中定義兩個函數並在同一會話中調用準確性() –