专栏首页大数据和机器学习tensorflow学习(tensorflow概念和用tensorflow拟合直线回归)
原创

tensorflow学习(tensorflow概念和用tensorflow拟合直线回归)

tensorflow是什么?

尽管深度学习背后的数学概念已经出现几十年了,但是用于创建和训练这些深度模型的程序类库在最近几年才出现。不幸的是,大多数类库都会在灵活性和实际生产价值上做出权衡。易用性的类库对于科研是无比珍贵的,因为这样科技工作者们才更方便地研究出新的模型框架,但是,如果考虑到实际生产的话,它们往往训练又太慢而没有实际的应用价值。另一方面,快、高效的类库,部署到分布式硬件上是可行的,但是它们只针对具体的那些神经网络,对新发明的网络又不适用。

这就留给决策者们一个困惑: 要想不重复实现相同的代码,我们还依然要用不太灵活的类库做科研吗?还是,科研和生产各用自己的一套不相同的库?

假如,我们选择前者,我们也许不能测试各种不同种类的神经网络,如果选择了后者,我们必须维护不同的两套代码,我们能有足够的精力做这个吗?

TensorFlow 就是为了解决,新出现的神经网络架构如何真正能在生产环境下使用,这一使命而诞生的。

Tensor是什么?

在tensorFlow中使用tensor这种数据结构来表示所有的数据,所有的计算涉及到的数据都是tensor这种结构类型的。Tensorflow把tensorflow看做是一个n维的数组或者列表,tensor又叫做张量,tensor的维数又叫做阶,但是tensor的阶和矩阵的阶不是一个概念。

你可以认为一个二阶tensor就是我们平常说的矩阵,一阶tensor就是一个向量,二阶tensor可以用t[i,j]来描述,三阶tensor可以用t[i,j,k]来描述。

数学实例

Python 例子

0

纯量 (只有大小)

s = 666

1

向量(大小和方向)

v = [1.9, 2.5, 3.1]

2

矩阵(数据表)

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

3

3阶张量 (数据立体)

3阶张量 (数据立体) t = [[[1,2,3], [4,5,6], [6,7,8]], [[8.9.10], [10,11,12], [12,12,13]], [[14,15,16], [16,17,18], [18,19,20]]]

n

n阶

(自己想想看)

如一个二阶tensort[2,1]的位置就是里面第二个元素中第一个位置4:

tensort[2,1]的值

如一个三阶tensort[3,2,1]的位置就是里面第三个元素中第二个元素的第一个位置:

tensort[3,2,1]的值

tensorflow的启动过程:

在tensorflow中,一个图是用来描述计算的过程的,图必须在会话session里面启动,程序的流程分为两步,第一步构建阶段,这个阶段就是专门构建一些计算的操作和数据的构建等,用op来描述,在数据和操作定义完之后就可以启动session来执行计算任务了

构建过程:

看下面的一些简单的代码(线性回归):

注:可以使用tf.constant()来定义常量

可以使用tf.Variable()来定义变量

#构建权重参数w
w=tf.Variable(tf.random_uniform([1],-1.,1.,name='myw'))
#构建偏置项
b=tf.Variable(tf.zeros(1),name='myb')
#组合函数
y=w*x_data+b

构建会话Session:

#构建session
sess = tf.Session()
#初始话上面构建的数据的操作,w和b
init = tf.global_variables_initializer()
#初始话
sess.run(init)

在session中运行直接调用Session.run()函数就可以直接跑tensorflow程序了:

for step in range(20):
    sess.run(train)
    print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))

Tensorboard:

Tensorboard是一个可视化界面,这个界面展示了tensorflow程序中数据的流向和相关的计算操作。

writer = tf.summary.FileWriter("./mytmp",sess.graph)

这样在mytmp文件夹下,增加了一个event文件,

再在终端,输入 tensorboard.exe --logdir = 刚在生成的log文件夹的绝对路径,回车,这样服务端就启动了,

接下来,启动客户端,即浏览器,输入localhost:6006,端口是6006,选中graphs,得到如下的可视化图:

可视化图片

完整代码如下:

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
num_points=100
vectors_set=[]
for i in range(num_points):
    x1=np.random.normal(0.,0.55)
    y1=x1*0.1+0.3+np.random.normal(0.0,0.03)
    vectors_set.append([x1,y1])
x_data=[v[0] for v in vectors_set ]
y_data=[v[1] for v in vectors_set]
plt.scatter(x_data,y_data,c='r')
plt.show()
#构建线性回归的graph
#构建权重参数w
w=tf.Variable(tf.random_uniform([1],-1.,1.,name='myw'))
#构建偏置项
b=tf.Variable(tf.zeros(1),name='myb')
#组合函数
y=w*x_data+b
loss=tf.reduce_mean(tf.square(y-y_data,name='mysquare'),name='myloss')
optimizer=tf.train.GradientDescentOptimizer(0.5)
train=optimizer.minimize(loss,name='mytrain')
#global_variables_initializer初始化Variable等变量
#构建session
sess = tf.Session()
#初始话上面构建的数据的操作,w和b
init = tf.global_variables_initializer()
#初始话
sess.run(init)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#迭代20次train
for step in range(20):
    sess.run(train)
    print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#写入磁盘,提供tensorboard在浏览器中展示用
writer = tf.summary.FileWriter("./mytmp",sess.graph)
plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()

生成的随机数可视化图片和拟合函数的可视化图片:

拟合数据
拟合直线

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

相关文章

  • textgcn

    论文:Graph Convolutional Networks for Text Classification. Liang Yao, Chengsheng M...

    opprash
  • python建模库学习

    在模型开发工程中,通常的工作的流程是使用pandas对数据进行清洗和加载,然后对处理后的数据进行建模,开发模型中的其中一个重要环节是机器学习中的“特征工程”,他...

    opprash
  • 马尔可夫(Markov)相关

    马尔可夫(Markov)相关概念包括马尔可夫过程(Markov Process),马尔可夫奖赏过程(Markov Reward Process),马尔可夫决策...

    opprash
  • windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)

    windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数) TF数据生成方式:参考TF数据生成12法 TF...

    学到老
  • TensorFlow从0到1 - 2 - TensorFlow核心编程

    上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与Te...

    黑猿大叔
  • tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer

    一.安装 目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新...

    学到老
  • TensorFlow从0到1丨第2篇:TensorFlow核心编程

    上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与Ten...

    用户1332428
  • Tensorflow生成了一些三维数据, 然后用一个平面拟合它

    week
  • tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer

    目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新到3.6,...

    学到老
  • 人工智能python的tensorflow基础

    IT故事会

扫码关注云+社区

领取腾讯云代金券