[PYTHON] Die Verwendung von TensorBoard hat sich geringfügig geändert

Überblick

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

Umgebung


$ 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

v1-Serie (1.14)

#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 GRAPHS

Es ist leichter zu verstehen, wenn Sie ihm einen Namen geben.

--SCALARS-Diagramm SCALARSのグラフ

Ü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

v2-Serie (2.00)

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.

SCALARSのグラフ

Recommended Posts

Die Verwendung von TensorBoard hat sich geringfügig geändert
Bitte beachten Sie, dass sich der neueste Link von ius geändert hat
Die Spezifikationen von Pytz haben sich geändert
Scraping des Nutzungsverlaufs des Community-Zyklus
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Visualisierte den Nutzungsstatus der Spüle im Unternehmen
Organisieren Sie die grundlegende Verwendung von Autotools und pkg-config
Beachten Sie, dass sich die Methode zum Veröffentlichen von Modulen in PyPI auf verschiedene Weise geändert hat.
Scraping Community Cycle Nutzungsverlauf PhantomJS-Version
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
Notieren Sie sich die Liste der grundlegenden Verwendungszwecke von Pandas
Die Seite von "OpenCV-Python Tutorial Document" wurde gestartet.
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
AttributeError: Die Geschichte des Lösens des Moduls'tensorflow 'hat kein Attribut' log '.
Schätzen Sie die Gesamtspeicherauslastung eines Objekts grob ab
Der Beginn von cif2cell
Die Bedeutung des Selbst
Zusammenfassung der Verwendung von pyenv
Grundlegende Verwendung von Flask-Classy
Verwendung von Python-Einheimischen ()
der Zen von Python
Grundlegende Verwendung von SQL Alchemy
Rache der Typen: Rache der Typen
Holen Sie sich die ID einer GPU mit geringer Speichernutzung