――Es ist sehr einfach zu lesen und die Kommentare sind sorgfältig geschrieben, sodass selbst ich, ein Anfänger von Python, verstehen konnte, was ich tat.
main.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import sys
import cv2
import random
import numpy as np
import tensorflow as tf
import tensorflow.python.platform
#Anzahl der Identifikationsetiketten(Diesmal Kyo:0,Kaoru: 1,Shinya:2 so 3)
NUM_CLASSES = 3
#Bildgröße beim Lernen(px)
IMAGE_SIZE = 28
#Anzahl der Abmessungen des Bildes(28* 28*Farbe(?))
IMAGE_PIXELS = IMAGE_SIZE*IMAGE_SIZE*3
#Legen Sie den für das Lernen erforderlichen Datenpfad und den Lernumfang fest
#Integrierte TensorFlow-Funktion, mit der Parametereinstellungen, Standardwerte und Erklärungen zum Hilfebildschirm registriert werden können
flags = tf.app.flags
FLAGS = flags.FLAGS
#Trainingsdaten
flags.DEFINE_string('train', '/workspace/dir/train/data.txt', 'File name of train data')
#Überprüfungstestdaten
flags.DEFINE_string('test', '/workspace/dir/test/data.txt', 'File name of train data')
#Ordner, in dem Daten abgelegt werden
flags.DEFINE_string('train_dir', /workspace/dir/data', 'Directory to put the training data.')
#Anzahl der Trainingsversuche zum Datenlernen
flags.DEFINE_integer('max_steps', 100, 'Number of steps to run trainer.')
#Wie viele Bilder sollen in einer Studie verwendet werden?
flags.DEFINE_integer('batch_size', 20, 'Batch size Must divide evenly into the dataset sizes.')
#Wenn die Lernrate zu klein ist, wird das Lernen nicht fortgesetzt, und wenn sie zu groß ist, konvergiert oder divergiert der Fehler nicht.
flags.DEFINE_float('learning_rate', 1e-4, 'Initial learning rate.')
#Lernmodell Teil der KI(neurales Netzwerk)Erschaffen
# images_placeholder:Platzhalter fuer Bild, keep_prob:Abbrecherquote Ort_Inhaber wird ein Argument
#Gibt die Wahrscheinlichkeit jedes Etiketts für das Eingabebild aus und gibt sie zurück
####
###Fügen Sie hier die Verarbeitung von Trainingsmodellen hinzu
####
if __name__ == '__main__':
#Datei öffnen
f = open(FLAGS.train, 'r')
#Array zum Einfügen von Daten
train_image = []
train_label = []
for line in f:
#Durch Leerzeichen mit Ausnahme von Zeilenumbrüchen getrennt
line = line.rstrip()
l = line.split()
#Daten lesen und auf 28x28 reduzieren
img = cv2.imread(l[0])
img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
#Nach dem Anstehen 0-Auf einen Float-Wert von 1 setzen
train_image.append(img.flatten().astype(np.float32)/255.0)
#Etikett 1-of-Mit der k-Methode vorbereiten
tmp = np.zeros(NUM_CLASSES)
tmp[int(l[1])] = 1
train_label.append(tmp)
#In das Numpy-Format konvertieren
train_image = np.asarray(train_image)
train_label = np.asarray(train_label)
f.close()
f = open(FLAGS.test, 'r')
test_image = []
test_label = []
for line in f:
line = line.rstrip()
l = line.split()
img = cv2.imread(l[0])
img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
test_image.append(img.flatten().astype(np.float32)/255.0)
tmp = np.zeros(NUM_CLASSES)
tmp[int(l[1])] = 1
test_label.append(tmp)
test_image = np.asarray(test_image)
test_label = np.asarray(test_label)
f.close()
#Geben Sie den Bereich an, der in das TensorBoard-Diagramm ausgegeben werden soll
with tf.Graph().as_default():
#Tensor zum Einfügen von Bildern(28*28*3(IMAGE_PIXELS)Beliebig viele dimensionale Bilder(None)Ich habe eine Minute)
images_placeholder = tf.placeholder("float", shape=(None, IMAGE_PIXELS))
#Tensor, um ein Etikett zu setzen(3(NUM_CLASSES)Beliebig viele dimensionale Beschriftungen(None)Geben Sie die Minuten ein)
labels_placeholder = tf.placeholder("float", shape=(None, NUM_CLASSES))
#Temporärer Tensor für die Abbrecherquote
keep_prob = tf.placeholder("float")
# inference()Ein Modell machen
logits = inference(images_placeholder, keep_prob)
# loss()Den Verlust berechnen
loss_value = loss(logits, labels_placeholder)
# training()Trainieren und Anpassen der Parameter des Lernmodells
train_op = training(loss_value, FLAGS.learning_rate)
#Berechnung der Genauigkeit
acc = accuracy(logits, labels_placeholder)
#Bereit zum Speichern
saver = tf.train.Saver()
#Sitzung erstellen(TensorFlow-Berechnungen müssen in einer absoluten Sitzung durchgeführt werden)
sess = tf.Session()
#Variable Initialisierung(Nach dem Starten der Sitzung initialisieren)
sess.run(tf.global_variables_initializer())
#TensorBoard-Anzeigeeinstellungen(Tensor Board deklarativ?)
summary_op = tf.summary.merge_all()
# train_Geben Sie den Pfad für die Ausgabe des TensorBoard-Protokolls mit dir an
summary_writer = tf.summary.FileWriter(FLAGS.train_dir, sess.graph)
#Eigentlich max_Führen Sie das Training so oft wie Schritt durch
for step in range(FLAGS.max_steps):
for i in range(len(train_image)/FLAGS.batch_size):
# batch_Durchführung eines Trainings für Größenbilder
batch = FLAGS.batch_size*i
# feed_Geben Sie die Daten an, die mit dict in den Platzhalter eingefügt werden sollen
sess.run(train_op, feed_dict={
images_placeholder: train_image[batch:batch+FLAGS.batch_size],
labels_placeholder: train_label[batch:batch+FLAGS.batch_size],
keep_prob: 0.5})
#Berechnen Sie die Genauigkeit nach jedem Schritt
train_accuracy = sess.run(acc, feed_dict={
images_placeholder: train_image,
labels_placeholder: train_label,
keep_prob: 1.0})
print "step %d, training accuracy %g"%(step, train_accuracy)
#Fügen Sie nach jedem Schritt einen Wert hinzu, der auf dem TensorBoard angezeigt werden soll
summary_str = sess.run(summary_op, feed_dict={
images_placeholder: train_image,
labels_placeholder: train_label,
keep_prob: 1.0})
summary_writer.add_summary(summary_str, step)
#Anzeigegenauigkeit für Testdaten nach dem Training
print "test accuracy %g"%sess.run(acc, feed_dict={
images_placeholder: test_image,
labels_placeholder: test_label,
keep_prob: 1.0})
#Trainieren Sie die Daten und speichern Sie das endgültige Modell
# "model.ckpt"Ist der Name der Ausgabedatei
save_path = saver.save(sess, "model2.ckpt")
Recommended Posts