TensorFlow是谷歌公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本。
TensorFlow支持python和c/c++语言,可以在cpu或gpu上进行运算,支持使用virtualenv或码头工人打包发布。
<强>定义变量强>
为了使用tensorflow,首先我们需要导入它
进口tensorflow tf
对于符号变量,我们新建一个
x=tf.placeholder (tf。float32[没有,784])
这里x并不是一个特定的值,只是一个占位符,后面我们需要用tensorflow进行计算式,我们会把它作为输入
在模型中,我们需要重权重和偏见偏置,这里就用变量来处理定义,变量可以在整个计算过程中修改
w=tf.Variable (tf。0([10]784年)) b=tf.Variable (tf.zeros ([10]))
在新建变量的同时,我们也初始化了它,然后
y=tf.nn.softmax (tf。matmul (x, w) + b)
这样我们就成功的实现了我们的模型
<>强训练强>
我们用叉作为我们的成本函数
H_ {y '} (y)=- \ sum_i y ' _i \ log (y_i)
y就是我们预测的概率分布,y '是真实的概率分布
为了实现交叉熵,我们需要一个新的占位符来作为正确答案的输入
y_=tf.placeholder (tf。float32,[没有10]) cross_entropy=- tf。reducen_sum (y_ * tf.log (y)
通过梯度下降来实现优化模型
train_step=tf.train.GradientDescentOptimizer (learning_rate) .minimize (cross_entropy)
我们使用这个模型之前,最后一件我们需要做的事是
init=tf.initialize_all_variables () 与tf.Session税(): sess.run (init)
现在,我能可以训练1000次这个模型了,& # 9786;& # 65039;
因为我在xrange (1000): batch_xs batch_ys=mnist.train.next_batch (100) sess.run (train_step feed_dict={x: batch_xs y_: batch_ys})
使用随机数据的小批就称为随机训练
<强>模型评分强>
首先,我们对比真实的y_和模型所得y之间正确的个数有多少
correct_prediction=tf.equal (tf。argmax (y, 1),特遣部队。agrmax (y_ (1)
这个会返回一个布尔列表,比如(真的,假的,真的,真的)
精度=tf.reduce_mean (tf。铸造(correc_prediction tf.float32)) 打印(sess.run(准确性、feed_dict={x: mnist.test。图片,y_: minst.test.labels}))
最后就通过以上计算得到准确率
<强>开始使用强>
TensorFlow并不是一个纯粹的神经网络框架,而是使用数据流图进行数值分析的框架。
TensorFlow使用有向图(图)表示一个计算任务。图的节点称为运维(操作)表示对数据的处理,图的边流描述数据的流向。
该框架计算过程就是处理张量组成的流。这也是TensorFlow名称的来源。
TensorFlow使用张量表示数据。张意为张量即高维数组,在python中使用numpy.ndarray表示。
TensorFlow使用会话执行图,使用变量维护状态.tf。常数是只能输出的运维,常用作数据源。
下面我们构建一个只有两个常数做输入,然后进行矩阵乘的简单图:
从tensorflow导入会话,设备,常数,matmul “‘构建一个只有两个常数做输入,然后进行矩阵乘的简单图:“ #如果不使使用会话()语用句,需要手动执行session.close ()。 #与设备设备指定了执行计算的设备: #“/cpu: 0”:机器的cpu。 #“/gpu: 0”:机器的第一个gpu,如果有的话。 #“/gpu: 1”:机器的第二个gpu,以此类推。 与会话()会话:#创建执行图的上下文 与设备(/cpu: 0): #指定运算设备 mat1=常数([[3 3]])#创建源节点 mat2=常数([[2],[2]]) 产品=matmul (mat1 mat2) #指定节点的前置节点,创建图 结果=session.run(产品)#执行计算 打印(结果) >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
详解Python使用tensorflow入门指南