详解Python使用tensorflow入门指南
TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本.
TensorFlow支持python和c/c++语言,可以在cpu或gpu上进行运算,支持使用virtualenv或docker打包发布.
定义变量
为了使用tensorflow,首先我们需要导入它
importtensorflowastf
对于符号变量,我们新建一个
x=tf.placeholder(tf.float32,[None,784])
这里x并不是一个特定的值,只是一个占位符,后面我们需要用tensorflow进行计算式,我们会把它作为输入
在模型中,我们需要weights权重和biases偏置,这里就用Variable来处理定义,Variable可以在整个计算过程中modified
w=tf.Variable(tf.zeros([784,10])) b=tf.Variable(tf.zeros([10]))
在新建Variable的同时,我们也初始化了它,然后
y=tf.nn.softmax(tf.matmul(x,w)+b)
这样我们就成功的实现了我们的模型
训练
我们用cross-entropy作为我们的costfunction
H_{y'}(y)=-\sum_iy'_i\log(y_i)
y就是我们预测的概率分布,y'是真实的概率分布
为了实现交叉熵,我们需要一个新的占位符来作为正确答案的输入
y_=tf.placeholder(tf.float32,[None,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() withtf.Session()assess: sess.run(init)
现在,我能可以训练1000次这个模型了,☺️
foriinxrange(1000): batch_xs,batch_ys=mnist.train.next_batch(100) sess.run(train_step,feed_dict={x:batch_xs,y_:batch_ys})
使用随机数据的小batch就称为随机训练
模型评分
首先,我们对比真实的y_和模型所得y之间正确的个数有多少
correct_prediction=tf.equal(tf.argmax(y,1),tf.agrmax(y_,1))
这个会返回一个boolean列表,比如[True,False,True,True]
accuracy=tf.reduce_mean(tf.cast(correc_prediction,tf.float32)) print(sess.run(accuracy,feed_dict={x:mnist.test.images,y_:minst.test.labels}))
最后就通过以上计算得到准确率
开始使用
TensorFlow并不是一个纯粹的神经网络框架,而是使用数据流图进行数值分析的框架.
TensorFlow使用有向图(graph)表示一个计算任务.图的节点称为ops(operations)表示对数据的处理,图的边flow描述数据的流向.
该框架计算过程就是处理tensor组成的流.这也是TensorFlow名称的来源.
TensorFlow使用tensor表示数据.tensor意为张量即高维数组,在python中使用numpy.ndarray表示.
TensorFlow使用Session执行图,使用Variable维护状态.tf.constant是只能输出的ops,常用作数据源.
下面我们构建一个只有两个constant做输入,然后进行矩阵乘的简单图:
fromtensorflowimportSession,device,constant,matmul '''构建一个只有两个constant做输入,然后进行矩阵乘的简单图:''' #如果不使用withsession()语句,需要手动执行session.close(). #withdevice设备指定了执行计算的设备: #"/cpu:0":机器的CPU. #"/gpu:0":机器的第一个GPU,如果有的话. #"/gpu:1":机器的第二个GPU,以此类推. withSession()assession:#创建执行图的上下文 withdevice('/cpu:0'):#指定运算设备 mat1=constant([[3,3]])#创建源节点 mat2=constant([[2],[2]]) product=matmul(mat1,mat2)#指定节点的前置节点,创建图 result=session.run(product)#执行计算 print(result)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。