Ich habe ein neuronales Netzwerk mit versteckter Schicht mit einer pyramidenförmigen Architektur mit TensorFlow erstellt. Hier ist der Code:Validierung und Test mit 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)
Und jetzt ich meine NN Zug:
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)
Nun würde Ich mag meine NN nach dem Training zu validieren und zu testen. Aber ich weiß nicht, wie man das neue feed_dict erstellt und session.run verwendet, um zu validieren/testen.
Danke für Ihre Hilfe!
Vielen Dank für Ihre Antwort. Also, wenn ich es richtig verstehe, muss ich zwei andere NNs erstellen, die tatsächlich Zeiger auf meine ursprüngliche NN sind, weil sie genau die gleichen trainierbaren Gewichte verwenden. Habe ich recht? – FiReTiTi
Ich erwartete, meine ursprüngliche NN mit verschiedenen Eingaben zu verwenden. – FiReTiTi
Nein, nein, Sie verwenden genau das gleiche Netzwerk zur Validierung - definieren Sie einfach zwei Funktionen im selben Netzwerk und die gleiche Genauigkeit() in derselben Sitzung –