Tensorflow基础(机器学习开源软件库)-Python教程

资源魔 46 0

阐明:本文实例应用Python版本为3.5.6,Tensorflow版本为2.0

引见

Tensorflow是Google推出的机械学习开源神器,对Python有着精良的言语支持,支持CPU,GPU以及Google TPU等硬件,而且曾经领有了各类百般的模子以及算法。今朝,Tensorflow已被宽泛使用于文本解决,语音辨认以及图象辨认等多项机械学习以及深度学习畛域。

根底框架

分为三层:使用层、接口层以及外围层

保举:《python教程

使用层

提供了机械学习相干的训练库、预测库以及针对Python、C++以及Java等变为言语的编程环境,相似于web零碎的前端,次要完成了对较量争论图的结构。

接口层

对Tensorflow性能模块的封装,便于其它言语平台的挪用。

外围层

最首要的局部,包罗设施层、网络层、数据操作层以及图较量争论层,执行使用层的较量争论。

1.设施层

包罗Tensorflow正在没有同硬件设施上的完成,次要支持CPU、GPU以及Mobile等设施,正在没有同硬件设施上完成较量争论饬令的转换,给下层提供对立的接口,完成顺序的跨平台性能。

2.网络层

网络层次要包罗RPC以及RDMA通讯协定,完成没有同设施之间的数据传输以及更新,这些协定城市正在散布式较量争论顶用到。

3.数据操作层

以tensor为解决工具,完成tensor的各类操作以及较量争论。

4.图较量争论层

包罗散布式较量争论图以及内陆较量争论图的完成,完成图的创立、编译、优化以及执行等。

设计理念

能够将Tensorflow了解为一张较量争论图中“张量的活动”,此中,Tensor(张量)代表了较量争论图中的边,Flow(活动)代表了较量争论图中节点所做的操作而构成的数据活动。

其设计理念是以数据流为外围,当构建相应的机械学习模子后,应用训练数据正在模子中进行数据活动,同时将后果以反向流传的形式反馈给模子中的参数,以进行调参,应用调整后的参数对训练数据再次进行迭代较量争论。

编程特性

有两个编程特性:

图的界说以及图的运转齐全离开

正在tensorflow中,需求事后界说各类变量,建设相干的数据流图,正在数据流图中创立各类变量之间的较量争论关系,实现图的界说,需求把运算的输出数据放出来后,才会构成输入值。

图的较量争论正在会话中执行

tensorflow的相干较量争论正在图中进行界说,而图的详细运转坏境正在会话(session)中,开启会话后,能力开端较量争论,封闭会话就不克不及再进行较量争论了。

举个例子:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
a = 3
b = 4
c = 5
y = tf.add(a*b, c)
print(y)
a = tf.constant(3, tf.int32)
b = tf.constant(4, tf.int32)
c = tf.constant(5, tf.int32)
y = tf.add(a*b, c)
print(y)
session = tf.compat.v1.Session()
print(session.run(y))
session.close()

能够看出,正在图创立后,并正在会话中执行数据较量争论,终极输入后果。

设计的益处就是:学习的进程中,耗费最多的是对数据的训练,这样设计的话,当进行较量争论时,图曾经确定,较量争论就只剩下一个一直迭代的进程。

根本概念

Tensor

张量,是tensorflow中最次要的数据构造,张量用于正在较量争论图中进行数据通报,创立了张量后,需求将其赋值给一个变量或占位符,之后才会将该张量增加到较量争论图中。

session

会话,是Tensorflow入彀算图的详细执行者,与图进行实际的交互。一个会话中能够有多个图,会话的次要目的是将训练数据增加到图中进行较量争论,也能够修正图的构造。

挪用模式保举应用with语句:

with session:
    session.run()
Variable

变量,示意图中的各个较量争论参数,经过调整这些变量的状态来优化机械学习算法。创立变量应应用tf.Variable(),经过输出一个张量,前往一个变量,变量申明后需进行初始化能力应用。

举例阐明:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
tensor = tf.ones([1, 3])
test_var = tf.Variable(tensor)
# 初始化变量
init_op = tf.compat.v1.global_variables_initializer()
session = tf.compat.v1.Session()
with session:
    print("tensor is ", session.run(tensor))
    # print("test_var is ", session.run(test_var))
    session.run(init_op)
    print("after init, test_var is", session.run(test_var))

Placeholder

占位符,用于示意输出输入数据的格局,申明了数据地位,容许传入指定类型以及形态的数据,经过会话中的feed_dict参数猎取数据,正在较量争论图运转时应用猎取的数据进行较量争论,较量争论终了后猎取的数据就会隐没。

举例阐明:

x = tf.compat.v1.placeholder(tf.int32)
y = tf.compat.v1.placeholder(tf.int32)
z = tf.add(x, y)
session = tf.compat.v1.Session()
with session:
    print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))

Operation

操作,是图中的节点,输出输入都是Tensor,作用是实现各类操作,包罗:

数学运算:add, sub, mul, div, exp ...

数组运算:concat, slice, split, rank ...

矩阵运算:matmul, matrixinverse ...

神经网络构建:softmax, sigmoid, relu ...

反省点:save, restore ...

行列步队以及同步:enqueue, dequeue, mutexacquire, mutexrelease ...

张量管制:merge, switch, enter, leave ...

Queue

行列步队,图中有状态的节点。蕴含出列(endqueue)以及入列(dequeue)两个操作,出列前往较量争论图中的一个操作节点,入列前往一个tensor值。

此中,行列步队有两种:

1. FIFOQueue

按出列程序入列的行列步队,正在需求读入的训练样本有序时应用。举个例子:

fifo_queue = tf.compat.v1.FIFOQueue(10, 'int32')
init = fifo_queue.enqueue_many(([1, 2, 3, 4, 5, 6], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(fifo_queue.size())
    for item in range(queue_size):
        print('fifo_queue', session.run(fifo_queue.dequeue()))

2. RandomShuffleQueue

以随机程序入列的行列步队,读入的训练样本无序时应用。举个例子:

rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32')
init = rs_queue.enqueue_many(([1, 2, 3, 4, 5], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(rs_queue.size())
    for i in range(queue_size):
        print('rs_queue', session.run(rs_queue.dequeue()))

本文来自 python教程 栏目,欢送学习!

以上就是Tensorflow根底(机械学习开源软件库)的具体内容,更多请存眷资源魔其它相干文章!

标签: python教程 python编程 python使用问题 Tensorflow 机器学习

抱歉,评论功能暂时关闭!