首页 > 其他 > 详细

TensorFlow基础与实战

时间:2019-05-18 11:29:55      阅读:156      评论:0      收藏:0      [点我收藏+]

开源工具

TensorFlow:谷歌,C++、Python,Linux、Windows、Mac OS X、Andriod、iOS

Caffe:加州大学,C++、Python、Matlab,Linux、Windows、Mac OS X

PaddlePaddle:百度

 

TensorFlow安装(Python)

pip install tensorflow(cpu版)

 

官网:https://www.tensorflow.org/

 

推荐图书:

《深度学习》https://item.jd.com/14454752659.html

《TensorFlow实战google深度学习框架》https://item.jd.com/12125572.html

 中文社区 http://www.tensorfly.cn/

 

TensorFlow入门

计算模型:计算图

数据模型:张量(tensor)

运行模型:会话(session)

 

TensorFlow程序的两个阶段

定义计算(在计算图中)

执行计算(在会话中)

 

Tensor:张量(数据类型)

  类比多维数组(numpy中的ndarray)

  类型:标量、向量、矩阵、数组等

  作用:对计算结果的引用、获得计算结果

 

Flow:流

 

通过计算图的形式表达计算的编程系统

计算图(可默认生成):节点/操作(op)

a = tf.constant([1.0,2.0],name=‘a‘)

b = tf.constant([2.0,3.0],name=‘b‘)

result = a+b

技术分享图片

 

注意:此过程只生成计算图,并不执行计算

 

必须知道:

使用图(graph)来表示计算任务

在被称之为会话(Session)的上下文(context)中执行图

使用tensor表示数据

通过变量(variable)维护状态

使用feed和fetch可以为任意的操作(operation)赋值或者从其中获取数据

# -*- coding:utf-8 -*-
import tensorflow as tf

#定义计算
a = tf.constant([1.5, 3.0], dtype=tf.float64) #constant常量构造函数 指定类型dtype=tf.float64
b = tf.constant([0., 1], name = b) #构造的常量区别名为b
res = a + b

#注意TensorFlow里面数据类型要一致

# print(res, b) 这时返回的是并不是我们想看到的直观的结果
#Tensor("add:0", shape=(2,), dtype=float32) Tensor("b:0", shape=(2,), dtype=float32)

#执行计算
sess = tf.Session() #构建会话
res,b = sess.run([res, b])#执行
sess.close() #关闭会话

#使用with语句 等价于上面三条语句
# with tf.Session() as sess:
#     sess.run(res)

print(res, b)

案例

任务1:拟合三维平面

通过

  技术分享图片

生成了100个样本点,如表所示

现假设函数关系未知,请根据这100个样本数据找出合适的a,b,c

使得

   技术分享图片

技术分享图片

 

求解步骤:

利用Numpy生成100个样本点

构造一个线性模型

最小化方差

初始化变量

启动图

拟合平面(开始训练)

 

技术分享图片

技术分享图片

TensorFlow计算方法:

为了在Python中进行高效的数值计算,将一些耗时操作放在Python环境的外部来计算(Numpy);

每一个操作切换回Python环境时仍需要不小的开销,这一开销主要用来进行数据迁移;

TensorFlow将计算过程完全运行在Python外部;

Tensorflow依赖于一个高效的C++后端来进行计算,并通过session连接。先创建一个图,然后在session中启动它。

 

任务1代码:

# -*- coding:utf-8 -*-

import tensorflow as tf
import numpy as np

#生成100个点 numpy默认生成64位
x_data = np.float32(np.random.rand(2, 100))
y_data = np.float32(np.dot([0.1, 0.2], x_data) + 0.3) #矩阵乘法.dot 实际y值

#定义
w = tf.Variable(tf.zeros([1, 2]))
bias = tf.Variable(tf.zeros([1]))
y = tf.matmul(w, x_data) + bias #构建线性方程 matmul矩阵乘法
#损失函数 (目标函数)
loss = tf.reduce_mean(tf.square(y - y_data))
#优化器
optimizer = tf.train.GradientDescentOptimizer(0.5) #梯度下降法 0.5 学习率
train = optimizer.minimize(loss)

init = tf.global_variables_initializer() #全局变量初始化

#构建会话
sess = tf.Session()
sess.run(init)#变量初始化
for i in range(100):
    w1, b1 = sess.run([w, bias])
    print(w1, b1)
    sess.run(train) #模型训练
sess.close()

 

TensorFlow基础与实战

原文:https://www.cnblogs.com/lyywj170403/p/10885008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!