Es ist erst jetzt, aber ich habe versucht, TensorBoard für eine Weile zu bewegen. Zu diesem Zeitpunkt war die Seite Die grundlegendste Verwendung von TensorBoard sehr hilfreich. Das Beste war, dass die Probe sehr einfach und leicht zu testen war.
Wie Sie jedoch in den Kommentaren sehen können, scheint es je nach Version verschiedene Unterschiede zu geben, und es ist der Inhalt, den ich versucht habe, in der neuesten Umgebung auszuführen. Nach dem Betrachten der Omoto-Seite hoffe ich, dass Sie dies als Referenz sehen können. Da die Grundlagen jedoch nur ein Kopieren und Einfügen der Omoto-Seite sind, ist es möglicherweise nicht erforderlich, darauf zu verweisen. Vielleicht. Nachdruck: Die grundlegendste Verwendung von TensorBoard
$ pip list | grep tens
tensorboard 1.14.0
tensorflow 1.14.0
tensorflow-estimator 1.14.0
Wann,
tensorboard 2.0.1
tensorflow 2.0.0
tensorflow-estimator 2.0.1
#Importieren Sie die erforderlichen Bibliotheken
import tensorflow as tf
import numpy as np
#Variablendefinition
dim = 5
LOGDIR = './logs'
x = tf.compat.v1.placeholder(tf.float32, [None, dim + 1], name='X')
w = tf.Variable(tf.zeros([dim+1,1]), name='weight')
y = tf.matmul(x,w, name='Y')
t = tf.compat.v1.placeholder(tf.float32, [None, 1], name='TEST')
sess = tf.compat.v1.Session()
#Definition der Verlustfunktion und Lernmethode
loss = tf.reduce_sum(tf.square(y - t))
train_step = tf.compat.v1.train.AdamOptimizer().minimize(loss)
#Definieren Sie Variablen, die mit TensorBoard verfolgt werden sollen
with tf.name_scope('summary'):
#Verwenden Sie return
loss_summary = tf.compat.v1.summary.scalar('loss', loss)
if tf.io.gfile.exists(LOGDIR):
tf.io.gfile.rmtree(LOGDIR) # ./Löschen, wenn logdir vorhanden ist
writer = tf.compat.v1.summary.FileWriter(LOGDIR, sess.graph)
#Sitzungsinitialisierung und Vorbereitung der Eingabedaten
sess.run(tf.compat.v1.global_variables_initializer())
train_t = np.array([5.2, 5.7, 8.6, 14.9, 18.2, 20.4,25.5, 26.4, 22.8, 17.5, 11.1, 6.6])
train_t = train_t.reshape([12,1])
train_x = np.zeros([12, dim+1])
for row, month in enumerate(range(1, 13)):
for col, n in enumerate(range(0, dim+1)):
train_x[row][col] = month**n
#Lernen
i = 0
for _ in range(100000):
i += 1
sess.run(train_step, feed_dict={x: train_x, t: train_t})
if i % 10000 == 0:
#Verlust oben erhalten_Pass sommerlich
s, loss_val = sess.run([loss_summary, loss] , feed_dict={x: train_x, t: train_t})
print('Step: %d, Loss: %f' % (i, loss_val))
#Dies gibt SCALARS aus
writer.add_summary(s, global_step=i)
--GRAFIK Bild
Es ist leichter zu verstehen, wenn Sie ihm einen Namen geben.
--SCALARS-Diagramm
Übrigens, wenn Sie es wie folgt aussehen lassen, müssen Sie den vorhandenen Code anscheinend nicht so stark ändern. Da dies im Tensorflow-Dokument beschrieben ist, ist dies eine geeignete Beschreibungsmethode.
import tensorflow.compat.v1 as tf
Lassen Sie uns hier den Schreibstil ändern. Der Punkt von v2 ist auch, dass sich die Art und Weise, wie Variable geschrieben wird, geändert hat. Was ich auch nicht wirklich verstehe, ist der Teil Eager Tensors. Vorerst habe ich die Sitzung wie bei angegeben.
#Importieren Sie die erforderlichen Bibliotheken
import tensorflow.compat.v1 as tf
import numpy as np
#Variablendefinition
dim = 5
LOGDIR = './logs'
with tf.Session() as sess:
x = tf.placeholder(tf.float32, [None, dim + 1], name='X')
with tf.variable_scope('weight'):
w = tf.get_variable("weight", shape=[dim+1,1], initializer=tf.zeros_initializer())
y = tf.matmul(x,w, name='Y')
t = tf.placeholder(tf.float32, [None, 1], name='TEST')
#Definition der Verlustfunktion und Lernmethode
loss = tf.reduce_sum(tf.square(y - t))
train_step = tf.train.AdamOptimizer().minimize(loss)
#Definieren Sie Variablen, die mit TensorBoard verfolgt werden sollen
with tf.name_scope('summary'):
loss_summary = tf.summary.scalar('loss', loss)
if tf.io.gfile.exists(LOGDIR):
tf.io.gfile.rmtree(LOGDIR) # ./Löschen, wenn logdir vorhanden ist
writer = tf.summary.FileWriter(LOGDIR, sess.graph)
#Sitzungsinitialisierung und Vorbereitung der Eingabedaten
sess.run(tf.global_variables_initializer())
train_t = np.array([5.2, 5.7, 8.6, 14.9, 18.2, 20.4,25.5, 26.4, 22.8, 17.5, 11.1, 6.6])
train_t = train_t.reshape([12,1])
train_x = np.zeros([12, dim+1])
for row, month in enumerate(range(1, 13)):
for col, n in enumerate(range(0, dim+1)):
train_x[row][col] = month**n
#Lernen
i = 0
for _ in range(100000):
i += 1
sess.run(train_step, feed_dict={x: train_x, t: train_t})
if i % 10000 == 0:
s, loss_val = sess.run([loss_summary, loss] , feed_dict={x: train_x, t: train_t})
print('Step: %d, Loss: %f' % (i, loss_val))
writer.add_summary(s, global_step=i)
--SCALARS-Diagramm
Es scheint, dass der Y-Teil anders ist.
Recommended Posts