ximingri 2019-06-25
TensorFlow是一个免费的开源软件库,用于跨任务范围的数据流和可区分编程。它是一个符号数学库,也用于机器学习应用程序,如神经网络。它用于Google的研究和制作,TensorFlow由Google Brain团队开发,供Google内部使用。
深度学习是一种特殊的机器学习,通过学习将世界表示为概念的嵌套层次结构来实现巨大的力量和灵活性,每个概念都是根据更简单的概念定义的,更抽象的表示是根据更抽象的概念计算出来的。
深度学习如何运作?
深度学习模型旨在通过类似于人类得出结论的逻辑结构来持续分析数据。为实现这一目标,深度学习使用称为人工神经网络(ANN)的分层算法结构。人工神经网络的设计灵感来自人脑的生物神经网络。这使得机器智能比标准机器学习模型的功能强大得多。确保深度学习模型不会得出错误的结论是一个棘手的前景,但是当它按预期工作时,功能性深度学习是一个科学奇迹和潜在的骨干,是真正的人工智能的潜在支柱。
在编写实际的深度学习应用程序之前,我们必须从TensorFlow中理解以下概念
常量
可以使用tf.constant()函数创建常量。
tf.constant( value,dtype=None, shape=None, name='Const', verify_shape=False )
import tensorflow as tf #Build computational graph node1 = tf.constant(3.0,tf.float32) node2 = tf.constant(4.0,tf.float32) output = node1 + node2 #Run computational graph sobj = tf.compat.v1.Session() sobj.run(output)
会话:会话基本上是TensorFlow程序的支柱。会话激活程序以使常量准备就绪并执行所需的操作。它可以通过以下方式完成。
占位符
占位符只是一个变量,我们将在以后分配数据。它允许我们创建操作并构建计算图,而不需要数据。在TensorFlow术语中,我们然后通过这些占位符将数据提供给图表。
tf.placeholder( dtype, shape=None, name=None )
参数:
import tensorflow as tf #Build computational grapg node1 = tf.compat.v1.placeholder(tf.float32) node2 = tf.compat.v1.placeholder(tf.float32) output = node1 + node2 #Run computational graph sobj = tf.compat.v1.Session() sobj.run(output,{node1:[1,3],node2:[4,5]})
变量来计算损失
TensorFlow变量是表示程序操纵的共享、持久状态的最佳方式。变量在调用run()时保持图中的状态。您可以通过构造变量类的实例将变量添加到图形中
import tensorflow as tf #Model Parameter w = tf.compat.v1.Variable([.3],tf.float32) b = tf.compat.v1.Variable([-.3],tf.float32) #Input and Output x = tf.compat.v1.placeholder(tf.float32) linear_model = w * x + b y = tf.compat.v1.placeholder(tf.float32) #loss function squared_delta = tf.square(linear_model-y) loss = tf.reduce_sum(squared_delta) init = tf.global_variables_initializer() #Run computational graph sobj = tf.compat.v1.Session() sobj.run(init) sobj.run(loss,{x:[1,2,3,4],y:[0,-1,-2,-3]})
减少损失
我们使用损失函数来确定预测值与训练数据中的实际值的偏差。我们改变模型权重以使损失最小化,这就是训练的全部内容。 梯度下降是一种尝试最小化某些错误的学习算法
TensorFlow有一整套优化类型,并且您也可以定义自己的优化
import tensorflow as tf #Model Parameter w = tf.compat.v1.Variable([.3],tf.float32) b = tf.compat.v1.Variable([-.3],tf.float32) #Input and Output x = tf.compat.v1.placeholder(tf.float32) linear_model = w * x + b y = tf.compat.v1.placeholder(tf.float32) #loss function squared_delta = tf.square(linear_model-y) loss = tf.reduce_sum(squared_delta) #optimiser optimiser = tf.compat.v1.train.GradientDescentOptimizer(0.01) train = optimiser.minimize(loss) init = tf.global_variables_initializer() #Run computationalgraph sobj = tf.compat.v1.Session() sobj.run(init) for i in range(1000): sobj.run(train,{x:[1,2,3,4],y:[0,-1,-2,-3]}) sobj.run([w,b])