Python深度学习:TensorFlow基础概念与入门示例
本文介绍Python深度学习框架TensorFlow的基础知识,涵盖张量数据结构、常量与变量定义、占位符用法及计算图原理。通过具体代码示例演示如何创建Session、执行初始化及进行矩阵运算,帮助初学者快速掌握TensorFlow核心操作。
正文
TensorFlow使用张量(Tensor)这一数据结构来存储和处理所有数据。
一阶张量用于表示向量,例如 v = [1.2, 2.3, 3.5];二阶张量用于表示矩阵,例如 m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]。张量的阶数可以通过方括号嵌套的层数来判断。
1、编辑器
编写TensorFlow代码本质上是编写Python文件。建议选用合适的代码编辑器,若习惯使用vim或gedit也可继续。鉴于已安装Anaconda,推荐使用其自带的Spyder编辑器,其操作界面与Matlab相似,且支持在右上角实时查看变量值,因此推荐使用。启动方式简单,只需在终端输入spyder即可。
2、常量
通常使用以下语句引入TensorFlow:
import tensorflow as tf
在后续文章中,将直接使用tf作为TensorFlow的缩写。
在TensorFlow中,定义常量需使用以下语句:
a=tf.constant(10)上述代码定义了一个值为10的常量a。
3、变量
变量需通过Variable定义,且必须进行初始化,例如:
x=tf.Variable(tf.ones([3,3]))
y=tf.Variable(tf.zeros([3,3]))上述代码分别定义了一个3x3的全1矩阵x和一个3x3的全0矩阵y,其中0和1为初始值。
变量定义完成后,必须显式执行初始化操作,即在代码后添加:
init=tf.global_variables_initializer()此步骤不可省略,否则会导致错误。
示例:自定义一个拉普拉斯算子W变量:
import tensorflow as tf
import numpy as np
x=np.array([[1,1,1],[1,-8,1],[1,1,1]])
w=tf.Variable(initial_value=x)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(w))4、占位符
若某些变量在定义时未知其具体值,无法直接初始化,该如何处理?
此时可使用占位符(Placeholder)预留位置,例如:
x = tf.placeholder(tf.float32, [None, 784])需指定变量的数据类型和形状(shape),后续通过feed方式输入具体数值。
5、图(Graph)
若将以下Python语句转换为TensorFlow语句,应如何编写?
x=3
y=2
z=x+y
print(z)定义两个变量并将两数相加输出结果。若在TensorFlow中直接按上述Python方式编写则是错误的。x、y、z分别为三个tensor对象,对象间的运算称为操作(op)。TensorFlow不会逐条执行各个操作,而是将所有操作放入计算图(graph)中,图中每个节点代表一个操作。随后,将整个graph的计算过程交给TensorFlow的Session,该Session可运行整个计算过程,相比逐条执行操作(operations)效率更高。
执行代码如下:
import tensorflow as tf
x = tf.Variable(3)
y = tf.Variable(5)
z=x+y
init =tf.global_variables_initializer()with tf.Session() as sess:
sess.run(init)
print(sess.run(z))其中sess.run()用于执行计算,注意需先执行变量初始化操作,再执行运算操作。
Session需先创建,使用完毕后应释放。因此建议使用with...as..语句,由系统自动释放资源。
例子1:hello world
import tensorflow as tf
word=tf.constant('hello,world!')
with tf.Session() as sess:
print(sess.run(word))例子2:加法和乘法
import tensorflow as tf
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
mul = tf.mul(a, b)
with tf.Session() as sess:
print('a+b=',sess.run(add, feed_dict={a: 2, b: 3}))
print('a*b=',sess.run(mul, feed_dict={a: 2, b: 3}))此处使用feed_dict以字典形式向多个变量输入值。
例子3:矩阵乘法
import tensorflow as tf
a=tf.Variable(tf.ones([3,2]))
b=tf.Variable(tf.ones([2,3]))
product=tf.matmul(5*a,4*b)
init=tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print(sess.run(product))其中
product=tf.matmul(5*a,4*b)也可改写为
product=tf.matmul(tf.mul(5.0,a),tf.mul(4.0,b))定义变量时若未指定数据类型,默认使用float32,因此结果为5.0而非整数5。
以上就是Python深度学习TensorFlow入门基础教程示例的详细内容,更多关于Python深度学习TensorFlow基础的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









