<kbd id='woaibaidu'></kbd><address id='woaibaidu'><style id='woaibaidu'></style></address><button id='woaibaidu'></button>

          当前位置:主页 > 脚本专栏 > python >
            详解Python使用tensorflow入门指南
            2018-02-12 22:06 发布 次浏览

          TensorFlow是Google公司2015年11月开源的第2代深度学习框架,是第1代框架DistBelief的改良版本.

          TensorFlow支持python和c/c++言语, 可以在cpu或gpu上停止运算, 支持运用virtualenv或docker打包公布.

          界说变量

          为了运用tensorflow,首先我们需求导入它

          import tensorflow as tf

          关于符号变量,我们新建1个

          x = tf.placeholder(tf.float32, [None, 784])

          这里x其实不是1个特定的值,只是1个占位符,前面我们需求用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作为我们的cost function

          H_{y'}(y) = -\sum_i y'_i \log(y_i)

          y就是我们预测的几率散布,y'是真实的几率散布

          为了完成穿插熵,我们需求1个新的占位符来作为正确谜底的输出

          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)

          我们运用这个模子之前,最初1件我们需求做的事是

          init = tf.initialize_all_variables()
          with tf.Session() as sess:
            sess.run(init)

          如今,我能可以训练1000次这个模子了,☺️

          for i in xrange(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))

          这个会前往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其实不是1个地道的神经网络框架, 而是运用数据流图停止数值剖析的框架.

          TensorFlow运用有向图(graph)表现1个盘算义务.图的节点称为ops(operations)表现对数据的处置,图的边flow 描绘数据的流向.

          该框架盘算进程就是处置tensor组成的流. 这也是TensorFlow称号的泉源.

          TensorFlow运用tensor表现数据. tensor意为张量即高维数组,在python中运用numpy.ndarray表现.

          TensorFlow运用Session履行图, 运用Variable保护形态.tf.constant是只能输入的ops, 经常使用作数据源.

          上面我们构建1个只要两个constant做输出, 然落后行矩阵乘的复杂图:

          from tensorflow import Session, device, constant, matmul
          
          '''构建1个只要两个constant做输出, 然落后行矩阵乘的复杂图:'''
          
          #假如不运用with session()语句, 需求手动履行session.close().
          #with device装备指定了履行盘算的装备:
          #  "/cpu:0": 机械的 CPU.
          #  "/gpu:0": 机械的第1个 GPU, 假如有的话.
          #  "/gpu:1": 机械的第2个 GPU, 以此类推.
          
          with Session() as session: # 创立履行图的上下文
            with device('/cpu:0'): # 指定运算装备
              mat1 = constant([[3, 3]]) # 创立源节点
              mat2 = constant([[2], [2]])
              product = matmul(mat1, mat2) # 指定节点的前置节点, 创立图
              result = session.run(product) # 履行盘算
              print(result)
          
          

          以上就是本文的全部内容,希望对各人的学习有所协助,也希望各人多多支持聚合网。