深度学习——张量概念的引入

参考书籍:《深度学习——基于Python语言和TensorFlow平台》
输出的数据在程序中都体现为是Tensor类型的一个对象,Tensor一般翻译成“张量”,张量在程序中定义时其实蕴含了两层含义:一是包含了对于输入数据的计算操作,给张量赋值时等号右边的表达式就是这个操作;二是容纳了一个(或一组)数据,也就是它的输出数据,在程序中就是张量赋值语句左边的变量。如n1=x1*w1,等号右边的x1*w1这个表达式就表达了计算操作,而等号左边的n1就是代表模型图中n1这个节点的输出数据的张量。这么看来,虽然张量只是代表模型图中某个节点的输出数据,但在程序中,我们一般均用节点名称来命名这个节点输出的张量。
类似Tensor(“mul:0”,dtype=float32)这样一个张量的输出信息中,括号中第一部分就是它对应的操作,第二部分就是它的输出数据类型。如果张量是由多个操作计算而来的,输出信息中的操作将是其中的最后一个。
可变参数不是模型中节点的输出数据,所以类似w1的这些变量的类型都不是Tensor而是tf.Variable,但因为它们会参与某个神经元的计算操作,所以它们从数值类型和形态上与张量是类似的。神经网络的优化器主要调整的就是所有tf.Variable。
那么,总结来说,张量(tensor)就是神经网络中神经元节点接收输入数据后经过一定计算操作输出的结果对象;张量在神经网络模型图中表现为各层的节点的输出数据,如果仅从结果或者数据流向的角度考虑时,有时候也可以把神经网络模型中的节点看作等同于张量。而节点加上连线所组成的整个神经网络模型图中表现的是张量在神经网络中“流动(flow)”的过程,这就是TensorFlow名称的由来。张量在程序中的具体表现是一个Tensor类型的对象。
最后,注意咋TensorFlow中用print函数来输出张量和可变参数时,并不会输出其中的具体数值,而是输出它们对应的操作与数据类型等信息。如果要查看它们的具体数值,需要在训练过程中用sess.run函数获得的返回值来查看,稍后还将介绍另一种查看的方法。
import tensorflow as tf

x1 = tf.placeholder(dtype=tf.float32)
x2 = tf.placeholder(dtype=tf.float32)
x3 = tf.placeholder(dtype=tf.float32)
yTrain = tf.placeholder(dtype=tf.float32)
print("x1: %s" % x1)

w1 = tf.Variable(0.1, dtype=tf.float32)
w2 = tf.Variable(0.1, dtype=tf.float32)
w3 = tf.Variable(0.1, dtype=tf.float32)
print("w1: %s" % w1)

n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3
print("n1: %s" % n1)

y = n1 + n2 + n3
print("y: %s" % y)

深度学习——张量概念的引入_第1张图片

你可能感兴趣的:(深度学习——张量概念的引入)