tensorflow 初玩

来源:互联网 发布:淘宝买家常问问题 编辑:程序博客网 时间:2024/06/02 07:27

1.前言

之前在一家AI算法公司呆了一小阵,虽然自己不是做算法这一块的,不过对tensorflow也是久闻大名了。 最近有些时间,就尝试着跑一下官方的例子,试试味道。

tensorflow训练部分用的语言主要是python,所以我是先大概浏览下python的语法的。

2.环境搭建

然后就是搭建tensorflow环境了。 由于懒,所以我还是打算用现成的docker 镜像。
在https://hub.docker.com/ 搜索了下发现有tensorflow 的官方镜像:
https://hub.docker.com/r/tensorflow/tensorflow/

docker源码在tensorflow的GitHub源码里面有,我尝试了下编译源码里面的dockerfile,没有成功,所以还是直接用现成镜像了。

官方的启动说明是这样的

docker run -it -p 8888:8888 tensorflow/tensorflowGo to your browser on http://localhost:8888/

不过如果这样启动的话,tensorboard的端口没有导出,没办法使用tensorboard。 我修改了下启动的命令,加了点私货。并写成了一个脚本,方便启动。

#!/bin/bashsudo docker run --name tensorflow_test --rm -it -p 8888:8888 -p 6006:6006 -v ~/workspacke/tensorflow_notebooks:/notebooks tensorflow/tensorflow

其中tensorflow_notebooks是我host机的一个目录,绑定到notebooks目录下。 这样Jupyter Notebook 的文件就会直接保存在本地。
PS:这个官方tensorflow docker 镜像的运行环境是个Jupyter Notebook 。

运行

......[I 08:53:12.631 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).[C 08:53:12.632 NotebookApp]     Copy/paste this URL into your browser when you connect for the first time,    to login with a token:        http://localhost:8888/?token=294123c9afa199856c63dc9eb29266c79ac55c02c92f3a8a

得到了一个网址,直接浏览器打开http://localhost:8888/?token=294123c9afa199856c63dc9eb29266c79ac55c02c92f3a8a
就可以来到Jupyter界面了。

3.测试官方例子

下面就来测试下官方的例子。
1.将tensorflow官方源码拷贝到刚才绑定的tensorflow_notebooks 文件夹下。
2.在浏览器的Jupyter 右上角点击new -> terminal ,打开一个终端。
3.运行 tensorflow/tensorflow/examples/tutorials/mnist/fully_connected_feed.py

PS: 这是一个前馈神经网络训练代码。MNIST是机器学习领域的一个经典问题,指的是让机器查看一系列大小为28x28像素的手写数字灰度图像,并判断这些图像代表0-9中的哪一个数字。
mnist目录下还有其他很多例子,读者可以自行尝试。

然后就能看到训练过程:

Step 900: loss = 0.39 (0.003 sec)Training Data Eval:  Num examples: 55000  Num correct: 47368  Precision @ 1: 0.8612Validation Data Eval:  Num examples: 5000  Num correct: 4344  Precision @ 1: 0.8688Test Data Eval:  Num examples: 10000  Num correct: 8686  Precision @ 1: 0.8686Step 1000: loss = 0.55 (0.007 sec)Step 1100: loss = 0.66 (0.077 sec)Step 1200: loss = 0.50 (0.005 sec)Step 1300: loss = 0.44 (0.006 sec)Step 1400: loss = 0.39 (0.003 sec)Step 1500: loss = 0.43 (0.004 sec)Step 1600: loss = 0.41 (0.004 sec)Step 1700: loss = 0.49 (0.004 sec)Step 1800: loss = 0.45 (0.005 sec)Step 1900: loss = 0.47 (0.003 sec)Training Data Eval:  Num examples: 55000  Num correct: 49413  Precision @ 1: 0.8984Validation Data Eval:  Num examples: 5000  Num correct: 4517  Precision @ 1: 0.9034Test Data Eval:  Num examples: 10000  Num correct: 9031  Precision @ 1: 0.9031

到此,跑官方例子基本没有问题了。

4.tensorboard

然后再尝试下tensorboard。 那tensorboard是什么呢?

为了更方便 TensorFlow 程序的理解、调试与优化,我们发布了一套叫做 TensorBoard 的可视化工具。你可以用
TensorBoard 来展现你的 TensorFlow 图像,绘制图像生成的定量指标图以及附加数据。

要看tensorboard,首先要找到log输出的目录。 通过查看fully_connected_feed.py 源码,我们发现一下参量:

  parser.add_argument(      '--log_dir',      type=str,      default=os.path.join(os.getenv('TEST_TMPDIR', '/tmp'),                           'tensorflow/mnist/logs/fully_connected_feed'),      help='Directory to put the log data.'  )

可以确定log目录在/tmp/tensorflow/mnist/logs/fully_connected_feed

在Jupyter 终端执行命令

# tensorboard --logdir=/tmp/tensorflow/mnist/logs/fully_connected_feedStarting TensorBoard 55 at http://3f831751e0b2:6006(Press CTRL+C to quit)

其中3f831751e0b2是docker容器的ID ,需要替换为本地地址。

打开http://localhost:6006/ 就可以看到tensorboard的内容了。

end

好了,至此,第一次运行tensorflow训练代码的就完成了。

原创粉丝点击