[PYTHON] L'utilisation de TensorBoard a légèrement changé

Aperçu

C'est juste maintenant, mais j'ai essayé de déplacer TensorBoard pendant un moment. À cette époque, la page Utilisation la plus basique de TensorBoard était très utile. La meilleure partie était que l'échantillon était très simple et facile à essayer.

Cependant, comme vous pouvez le voir dans les commentaires, il semble qu'il existe diverses différences selon la version, et c'est le contenu que j'ai essayé de l'exécuter dans le dernier environnement. Donc, après avoir regardé la page Omoto, j'espère que vous pouvez voir cela comme une référence, mais comme les bases ne sont qu'un copier-coller de la page Omoto, il n'est peut-être pas nécessaire de s'y référer. Peut être. Réimpression: Utilisation la plus basique de TensorBoard

environnement


$ pip list | grep tens
tensorboard          1.14.0
tensorflow           1.14.0
tensorflow-estimator 1.14.0

Quand,
tensorboard          2.0.1
tensorflow           2.0.0
tensorflow-estimator 2.0.1

série v1 (1.14)

#Importer les bibliothèques requises
import tensorflow as tf
import numpy as np

#Définition variable
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()

#Définition de la fonction de perte et méthode d'apprentissage
loss = tf.reduce_sum(tf.square(y - t))
train_step = tf.compat.v1.train.AdamOptimizer().minimize(loss)

#Définir les variables à suivre avec TensorBoard
with tf.name_scope('summary'):
	#Utiliser le retour
	loss_summary = tf.compat.v1.summary.scalar('loss', loss)
	if tf.io.gfile.exists(LOGDIR):
		tf.io.gfile.rmtree(LOGDIR) # ./Supprimer si logdir existe
	writer = tf.compat.v1.summary.FileWriter(LOGDIR, sess.graph)

#Initialisation de session et préparation des données d'entrée
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

#Apprentissage

i = 0
for _ in range(100000):
	i += 1
	sess.run(train_step, feed_dict={x: train_x, t: train_t})
	if i % 10000 == 0:
		#Perte obtenue ci-dessus_Passer estival
		s, loss_val = sess.run([loss_summary, loss] , feed_dict={x: train_x, t: train_t})
		print('Step: %d, Loss: %f' % (i, loss_val))
		#Cela produira SCALARS
		writer.add_summary(s, global_step=i)

--Image GRAPHIQUES GRAPHS

Il sera plus facile à comprendre si vous lui donnez un nom.

--Graphe SCALARS SCALARSのグラフ

Au fait, si vous faites ressembler à ce qui suit, il semble que vous n'ayez pas à changer autant le code existant. Puisqu'il est décrit dans le document tensorflow, il s'agit d'une méthode de description appropriée.

import tensorflow.compat.v1 as tf

série v2 (2.00)

Alors, changeons le style d'écriture ici. En outre, le point de v2 est que la façon d'écrire Variable a changé. De plus, ce que je ne comprends pas vraiment, c'est la partie Eager Tensors. Pour le moment, j'ai spécifié session comme avec.


#Importer les bibliothèques requises
import tensorflow.compat.v1 as tf
import numpy as np

#Définition variable
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')

	#Définition de la fonction de perte et méthode d'apprentissage
	loss = tf.reduce_sum(tf.square(y - t))
	train_step = tf.train.AdamOptimizer().minimize(loss)

	#Définir les variables à suivre avec TensorBoard
	with tf.name_scope('summary'):
		loss_summary = tf.summary.scalar('loss', loss)
		if tf.io.gfile.exists(LOGDIR):
			tf.io.gfile.rmtree(LOGDIR) # ./Supprimer si logdir existe
		writer = tf.summary.FileWriter(LOGDIR, sess.graph)

	#Initialisation de session et préparation des données d'entrée
	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

	#Apprentissage

	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)

--Graphe SCALARS

Il semble que la partie Y soit différente.

SCALARSのグラフ

Recommended Posts

L'utilisation de TensorBoard a légèrement changé
Veuillez noter que le dernier lien d'ius a changé
Les spécifications de pytz ont changé
Gratter l'historique d'utilisation du cycle communautaire
Afficher le graphique de tensorBoard sur Jupyter
Visualisation de l'état d'utilisation de l'évier dans l'entreprise
Organisez l'utilisation super basique des Autotools et de pkg-config
Notez que la méthode de publication des modules sur PyPI a changé de différentes manières.
Scraping de l'historique d'utilisation du cycle de la communauté Version PhantomJS
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
Prenez note de la liste des utilisations de base de Pandas
Le site "OpenCV-Python Tutorial Document" a été lancé.
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
AttributeError: L'histoire de la résolution du module 'Sensorflow' n'a pas d'attribut'log '.
Estimer grossièrement l'utilisation totale de la mémoire d'un objet
Le début de cif2cell
Le sens de soi
Résumé de l'utilisation de pyenv
Utilisation basique de flask-classy
Utilisation des locaux Python ()
le zen de Python
Utilisation de base de SQL Alchemy
La vengeance des types: la vengeance des types
Obtenez l'identifiant d'un GPU avec une faible utilisation de la mémoire