《Tensorflow从入门到精通》
第一
开发环境搭建
1. tensorflow的环境搭建
windows下安装cpu版tensorflow:
pip install tensorflow

在ubuntu上安装gpu版tensorflow:
a. 在硬件上装上英伟达独立显卡
例如:买来的nvidia geforce gtx 1070 公版显卡,发现显卡体积太大,机箱容纳不下显卡; 显卡要求最小功率为500W,台式机电源额定功率为250W;显卡上有SLI接口用于多个独显集成;
首先解决机箱问题,需要使用独立显卡外接排线,将显卡装在机箱外面,若500W电源只为显卡供电且没有接主板,则需要将电源上的主板连接口的绿线和任意黑线短接。
其次解决电源功率太小问题,买一个600W额定功率的大电源,同时使用250W的原装电源和600W的外加电源,250W的电源用于主板,硬盘,cpu的供电;600W电源用于独立显卡的供电
b. 更新显卡驱动
c. 安装gpu版tensorflow
注意:最好是使用virtualenv安装python环境,步骤如下:
首先,安装一个最基本的python环境,基本的python环境中已经安装了pip;如果没有安装pip,mac下可使用sudo easy_install pip来安装pip;
其次,安装virtualenv:例如下面的例子:
cd ~/Project
mkdir tensorflow_project
cd tensorflow_project
virtualenv --no-site-packages tensorflow_env
cd tensorflow_env
source ./bin/activate
最后,在该virtualenv环境下安装tensorflow:使用命令pip install tensorflow即可;
2. 第一个tensorflow程序(tensorflow基本写法)
# coding: UTF-8
import tensorflow as tf
# 定义常量
one = tf.constant(1)
# 定义变量
state = tf.Variable(0, name='result')
# 定义运算
temp = tf.add(state, one)
# 定义tensor的op操作
op_update = tf.assign(state, temp)
# op_init = tf.initialize_all_variables()
op_init = tf.global_variables_initializer()
# 运行
with tf.Session() as sess:
sess.run(op_init)
for i in range(10):
sess.run(op_update)
print(sess.run(state))
注意:
a. tensorflow程序中一般包括定义常量,变量,运算; 其次为tensor和op; 最后是在gpu中运行tensor
第二
基本概念与入门
1.基本概念
张量:
例如:tf.constant([1.0, 2.0], name="cons")
计算图:
graph1 = tf.Graph()
with graph1.as_default():
a = tf.Variable(tf.random([2, 3], stddev=1, seed=1))
with tf.Session(graph=graph1) as sess:
init_var = tf.initialize_all_variables()
sess.run(init_var)
会话:
sess = tf.Session()
sess.run(init_var)
sess.close()
with tf.Session() as sess:
sess.run(init_var)
sess= tf.InteractiveSession()
sess.run(init_var)
sess.close()
config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
sess = tf.Session(config)
前向传播算法:
反向传播算法:
监督学习:
深度学习:
2.神经网络解决分类问题的基本步骤:
首先,提取特征向量作为神经网络的输入
其次,定义神经网络结构
再者,训练神经网络
最后,预测未知的数据
3. 使用前向传播算法的例子:
例如:
#!~/Project/tensorflow_project/tensorflow_env/bin/python
# coding=utf-8
import tensorflow as tf
import numpy as np
#1.提取特征值
x = tf.constant([[0.7, 0.9]])
#2.建立神经网络结构
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
#3.前向传播算法
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
#4.反向传播算法
init_var = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_var)
print sess.run(y)
4. 使用占位符实现多输入的例子:
例如:
#!~/Project/tensorflow_project/tensorflow_env/bin/python
# coding=utf-8
import tensorflow as tf
import numpy as np
#1.提取特征值
#x = tf.constant([[0.7, 0.9]])
x = tf.placeholder(tf.float32, name="x-input", shape=(3,2))
#2.建立神经网络结构
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
#3.前向传播算法
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
#4.反向传播算法
init_var = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_var)
print sess.run(y, feed_dict={x:[[0.7, 0.9], [0.1, 0.4], [0.5, 0.8]]})
5. 完整的训练神经网络的例子
注意:训练神经网路的三个步骤
首先,定义神经网络结构及使用前向传播算法输出结果
其次,定义损失函数及选择反向传播算法
最后,在会话上反复运行反向传播算法
例如:
#!~/Project/tensorflow_project/tensorflow_env/bin/python
# coding=utf-8
import tensorflow as tf
import numpy as np
from numpy.random import RandomState
#1.提取特征值
x = tf.placeholder(tf.float32, name="x-input", shape=(None,2))
y_ = tf.placeholder(tf.float32, name="y-input", shape=(None,1))
#2.建立神经网络结构
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
#3.前向传播算法
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
#定义测试数据
X = RandomState(1).rand(128, 2)
Y = [[int(x1+x2<1)] for (x1, x2) in X]
#定义损失函数
loss = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))
train_step = tf.train.AdamOptimizer(0.00001).minimize(loss)
init_var = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_var)
print sess.run(w1)
print sess.run(w2)
#开始训练
ALL_SIZE = 50000
BATCH_SIZE = 10
for i in range(ALL_SIZE):
start = (i * BATCH_SIZE) % 128
end = min(start + BATCH_SIZE, 128)
sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
total_loss = sess.run(loss, feed_dict={x: X, y_: Y})
print "After", i, "times trainning, lossing rate is ", total_loss
print(sess.run(w1))
print(sess.run(w2))
第三
Mnist问题
1.下载数据集
下载地址为
http://yann.lecun.com/exdb/mnist/
下载后的文件分别为:
train-images-idx3-ubyte.gz
train-labels-idx1-ubyte.gz
t10k-images-idx3-ubyte.gz
t10k-labels-idx1-ubyte.gz
例如:编写代码下载mnist数据集,并检验数据集
#!/~/Project/tensorflow_project/tensorflow_env/bin/python
# coding = utf-8
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
print mnist.train.num_examples
print mnist.validation.num_examples
print mnist.test.num_examples
print mnist.train.images[0]
print mnist.train.labels[0]
batch_size = 100
xs, ys = mnist.train.next_batch(batch_size)
print xs.shape
print ys.shape
print xs
print ys
注意:
首先,使用input_data下载并读取数据集;
再者,打印数据集的各项信息来验证数据集;
《Tensorflow从入门到精通》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 小a的排列
链接:https://ac.nowcoder.com/acm/contest/317/G来源:牛客网 小a有一个长度为nn的排列.定义一段区间是"萌"的,当且仅当把区间中各个数排序 ...
- DVR登录绕过漏洞(CVE-2018-9995)
###漏洞描述 此漏洞允许攻击者通过修改“Cookie: uid=admin” 之后访问特定 DVR 的控制面板,返回此设备的明文管理员凭证. ###漏洞利用 1.利用代码 curl "ht ...
- 在Windows .NET平台下使用Memcached (Enyim使用)
1. 启动并配置Memcached的服务端 1. 下载Memcached http://download.csdn.net/download/ful1021/7969231 2. 解压到任意目录下, ...
- 如果redis没有设置expire,他是否默认永不过期?
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/soulmate_P/article/details/81136054如果没有设置有效期,即使内存用完 ...
- Hive学习之路 (一)Hive初识
Hive 简介 什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 Hadoop 的一个数据仓库工具 3.可以将结构化的数据映射为一张数据库表 4.并提供 HQL(Hive S ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(云端电脑(Windows)安装配置数据库,使用本地Navicat for MySQL和手机APP 远程连接测试)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装配置数据库,使用Navicat for MySQL和手机APP 连接测试) 根据前面的教程把软件复制到云 ...
- 使用keras的LSTM进行预测----实战练习
代码 import numpy as np from keras.models import Sequential from keras.layers import Dense from keras. ...
- 面试:用 Java 逆序打印链表
昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入了 volatile 关键字,不少朋友问我,到底为啥要加 volatile 这个关键字呀,而它,到底又有什么神奇的作用呢 ...
- 不容错过的超赞项目管理PPT
不容错过的超赞项目管理PPT(转载) 大公司的一个好处,是各个领域都有牛人,可以为你提供经验分享交流.腾讯庞大的培训体系更是保证了:如果你想学点什么东西,你总可以学到.腾讯内部资源30页PPT曝光 — ...
- SNMP 获取交换机端口相关信息
原文地址:https://blog.csdn.net/ysdaniel/article/details/37927541 我们想用snmpwalk查看网络设备的端口,MIB库中相关定义的信息如下: [ ...