最近在colab上学习tensorflow, 觉得很方便,但是在云计算机上跑是和本地机器跑有点不一样的。例如,tensorboard的使用就不一样,我们无法通过本地的地址去访问到tensorboard,但是tensorboard这个又是tensorflow里面一个很重要的工具,如何才能在colab中用到它呢?以下介绍一下两个方法
方法一:两行magic code
%load_ext tensorboard #使用tensorboard 扩展
%tensorboard --logdir logs #定位tensorboard读取的文件目录
注意这里的logs是存放tensorboard文件的目录,一般这种文件的都是event.out.tfevent开头,然后后面一堆数字,运行这两个之后呢,就会在notebook中出现tensorboad的界面
![4a1743fd921d554197ced2ce5cbb2022.png](https://i-blog.csdnimg.cn/blog_migrate/1230346676fd71591e456f4e958c8097.jpeg)
如果出现以下提示,很大可能是文件目录出现了问题,重新检查一下吧
![d99a6dd5b9b8579955877ae1b1fc5d8c.png](https://i-blog.csdnimg.cn/blog_migrate/33545a5444db36af6b0eddb55693b79a.jpeg)
方法二:我也不知道为什么但就是成功了的办法
第一步:
!pip install tensorboardcolab
第二步
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback
tbc=TensorBoardColab()
第二步之后呢会出现一条链接,点击打开,但是这个时候一般是什么都没有的
第三步
import tensorflow as tf
graph = tf.Graph()
第四步,让代码块在 with graph.as_default():里面运行
with graph.as_default():
代码块
......
writer = tf.summary.FileWriter('./Graph', sess.graph)
......
注意需要写入的文件目录默认是./Graph, 因为这种方法默认tensorboard读取的是当前目录下 的graph目录(我也不知道怎么改)
以下是可以完整跑出来的代码:
#第一步安装
!pip install tensorboardcolab
#第二步:运行环境,需要等待8秒
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback
tbc=TensorBoardColab()
#第三步:定义graph
import numpy as np
import matplotlib.pyplot as plt
graph = tf.Graph()
#第四步
with graph.as_default():
def normalize(X):
mean=np.mean(X)
std=np.std(X)
X=(X-mean)/std
return X
#Data
boston=tf.contrib.learn.datasets.load_dataset('boston')
X_train,Y_train=boston.data[:,5],boston.target
# X_train=normalize(X_train)
n_samples=len(X_train)
#placeholder for training data
X=tf.placeholder(tf.float32,name='X')
Y=tf.placeholder(tf.float32,name='Y')
#初始参数
b=tf.Variable(0.0)
w=tf.Variable(0.0)
#the linear regression model
Y_hat=X*w+b
#loss function
loss=tf.square(Y-Y_hat,name='loss')
#optimizer
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)
init_op=tf.global_variables_initializer()
total=[]
with tf.Session() as sess:
sess.run(init_op)
writer=tf.summary.FileWriter('./Graph', sess.graph)
for i in range(10):
total_loss=0
for x,y in zip(X_train,Y_train):
_,l=sess.run([optimizer,loss],feed_dict={X:x,Y:y})
total_loss+=l
total.append(total_loss/n_samples)
print('Epoch{0}:Loss{1}'.format(i,total_loss/n_samples))
writer.close()
b_value,w_value=sess.run([b,w])
Y_pred=X_train*w_value +b_value
print('Done')
#plot the result
plt.plot(X_train,Y_train,'bo',label='Real Data')
plt.plot(X_train,Y_pred,'r',label='Predicted Data')
plt.legend()
plt.show()
plt.plot(total)
plt.show()
还有一点很奇怪的是,如果直接在Graph的上级目录运行tbc=TensorBoardColab(),会发现Graph目录会被无端端删除,等我后面搞明白了再更一更这一篇东西吧
![4ccc0f466d0962c2447c3dc017124c67.png](https://i-blog.csdnimg.cn/blog_migrate/deaf427b1d4b6418abdcf680a6c63ed4.png)