机器学习,人工智能往后肯定是一个趋势,现阶段有必要研究一两个人工智能的工具,以免自己技术落伍,其中tensorflow就是一个很不错的项目,有谷歌开发后开源,下面开始学习安装和使用

安装篇:

很不幸,源代码和pip的源都是在谷歌托管,连tensorflow官网都是,所以国内访问不了,很悲剧。但是通过docker可以轻松安装,又不用翻墙。

docker pull tensorflow/tensorflow

下载tensorflow镜像。

docker run -dit -p 8888:8888 --name tensorflow tensorflow/tensorflow

启动tensorflow容器。

如果没有防火墙的话,现在用浏览器访问docker所在服务器地址的8888端口就可以看到jupyter界面了。(jupyter可以认为是一个python的网页版IDE,方便使用)

http://xxx.xxx.xxx.xxx:8888

为了安全,jupyter默认设置了token验证,可以通过

docker logs tensorflow

查看token。每还一个浏览器或者电脑,都需要输入新的token, 如果有人感觉使用不方便,可以给jupyter设置一个密码,设置方式如下:

1,进入tensorflow容器

docker exec -it tensorflow /bin/bash

2,运行

jupyter notebook password

3, 根据提示两次输入密码

4, 重启tensorflow容器

docker restart tensorflow

二,第一个tensorflow程序

tensorflow的入门程序是识别手写数字,就跟其他程序的helloword一样。

详细工作原理,见这个帖子

http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html

代码实现:

  1. from tensorflow.examples.tutorials.mnist import input_data
  2. import tensorflow as tf
  3. #引入mnist的数据
  4. mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
  5. #设置一个数组元素为32位浮点数、未知数*784的数组占位符X
  6. x = tf.placeholder(tf.float32, [None, 784])
  7. #设置一个默认值为0的784*10的数组变量
  8. w = tf.Variable(tf.zeros([784,10]))
  9. #设置一个默认值为0的1*10的数组变量
  10. b = tf.Variable(tf.zeros([10]))
  11. #根据公式生成表达式
  12. y = tf.nn.softmax(tf.matmul(x,w) + b)
  13. #设置一个浮点数,未知数*10的数组占位符y_
  14. y_ = tf.placeholder("float", [None,10])
  15. #根据公式设置表达式
  16. cross_entropy = -tf.reduce_sum(y_*tf.log(y))
  17. #设置训练方式
  18. train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
  19. #初始化变量
  20. init = tf.initialize_all_variables()
  21. #生成执行session
  22. sess = tf.Session()
  23. #运行变量初始化
  24. sess.run(init)
  25. #执行1000次训练,每次从mnist库中拿出100个数进行训练
  26. for i in range(10000):
  27. batch_xs, batch_ys = mnist.train.next_batch(100)
  28. sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})
  29. #
  30. correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
  31. accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
  32. print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})

结果为:

  1. Extracting MNIST_data/train-images-idx3-ubyte.gz
  2. Extracting MNIST_data/train-labels-idx1-ubyte.gz
  3. Extracting MNIST_data/t10k-images-idx3-ubyte.gz
  4. Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
  5. 0.9215
  6.  

如果出现这个错误

Temporary failure in name resolution

那么很不幸,意味着mnist这个库下载不下来,这个库也是要访问谷歌,只能通过vpn或者国外服务器测试了。

  1.  

【tensorflow】tensorflow学习记录——安装、第一个程序篇的更多相关文章

  1. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  2. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

  3. DirectX11 学习笔记1 - 第一个程序

    为了加快学习速度,和使程序更加easy理解.  我把sampler tutorial里面的一个样例 的固定代码和常常修改的代码经过简单的类的封装了一下. 以后学习的时候就能够仅仅在还有一个文件写ren ...

  4. 知乎TensorFlow入门学习记录

    知乎地址:https://zhuanlan.zhihu.com/p/30487008 import tensorflow as tf a=tf.placeholder(tf.int16) # 接受的数 ...

  5. ICE学习第二步-----从第一个程序了解ICE(HelloWorld)

    ICE(Internet Communications Engine)是一种面向对象的中间件平台,主要用于网络通讯.它为面向对象的“客户端-服务器”模型的应用提供了一组很好的工具和API接口.目前在全 ...

  6. 重新学习之spring第一个程序,配置IOC容器

    第一步:导入相关jar包(此范例导入的是spring3.2.4版本,spring2.5版本只需要导入spring核心包即可) 第二步:在项目的src下配置applicationContext.xml的 ...

  7. android学习三---创建第一个程序

    1.创建一个Helloworld程序 1.1 new-android application 点击file-new-android application出现如下界面 填上应用名,项目名,包名,选择所 ...

  8. LoadRunner学习记录--安装遇到的问题一

    安装过程中的出现了此计算机上缺少vc2005_sp1_with_atl_fix_redist 需要到这个目录下lrunner\En\prerequisites\vc2005_sp1_redist\ 手 ...

  9. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

随机推荐

  1. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  2. 深入浅出 Cocoa 之 Core Data(4)- 使用绑定

    深入浅出 Cocoa 之 Core Data(4)- 使用绑定 罗朝辉(http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 前面讲解了 Core Data 的框架, ...

  3. C#读取资源文件的两种方法及保存资源文件到本地

    方法1 GetManifestResourceStream   VB.NET中资源的名称为:项目默认命名空间.资源文件名 C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名 例如:istr = ...

  4. es6 - 箭头

    class User { constructor(name, age) { this.name = name; this.age = age; } changeName(name) { this.na ...

  5. day06_方法_20150806

    day06_方法_20150806 -------------------------回想:--------------------------------- 1.更佳适用情况       当---w ...

  6. 重读金典------高质量C编程指南(林锐)-------第一章 文件结构

    第一章  文件结构       C/C++程序通常由两个文件组成,一个文件保存程序的声明,称为头文件,.h 文件.一个保存程序的实现,称为定义文件.c文件. 1.1 版权与版本的声明 版权和版本的声明 ...

  7. c/c++:回调函数

    1:函数名为指针 首先,在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自己主动转换成指针的类型.如: 1 #include<stdio.h> 2 ...

  8. Oracle创建自增字段和修改方法-ORACLE SEQUENCE的简单介绍

    http://blog.csdn.net/zhoufoxcn/article/details/1762351先假设有这么一个表: create table S_Depart  (    DepartI ...

  9. VMware Workstation 永久许可证密钥

    VMware是功能最强大的虚拟机软件,用户可在虚拟机同时运行各种操作系统,进行开发.测试.演示和部署软件,虚拟机中复制服务器.台式机和平板环境,每个虚拟机可分配多个处理器核心.主内存和显存. VMwa ...

  10. Away3D引擎学习笔记(一)资源加载解析块

    前文:Away3D断断续续用了一段时间了,三维相关的很多算法,计算转换还是有点绕,整理些自己觉得还有点意思东西,希望大家有用. 三维开始,Away3D构架你场景那几行代码各处都有,这里就不copy了, ...