<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
      此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
      人工智能開發(fā)者 正文
      發(fā)私信給AI研習(xí)社
      發(fā)送

      0

      手把手教你用 TensorFlow 實(shí)現(xiàn)文本分類(下)

      本文作者: AI研習(xí)社 2017-05-29 13:36
      導(dǎo)語:文本分類全流程解析。

      手把手教你用 TensorFlow 實(shí)現(xiàn)文本分類(下)

      雷鋒網(wǎng)按:本文作者張慶恒,原文載于作者個(gè)人博客,雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))已獲授權(quán)。

      本篇文章主要記錄對(duì)之前用神經(jīng)網(wǎng)絡(luò)做文本識(shí)別的初步優(yōu)化,進(jìn)一步將準(zhǔn)確率由原來的65%提高到80%,這里優(yōu)化的幾個(gè)方面包括:

      ● 隨機(jī)打亂訓(xùn)練數(shù)據(jù)

      ● 增加隱層,和驗(yàn)證集

      ● 正則化

      ● 對(duì)原數(shù)據(jù)進(jìn)行PCA預(yù)處理

      ● 調(diào)節(jié)訓(xùn)練參數(shù)(迭代次數(shù),batch大小等)

        隨機(jī)化訓(xùn)練數(shù)據(jù)

      觀察訓(xùn)練數(shù)據(jù)集,發(fā)現(xiàn)訓(xùn)練集是按類別存儲(chǔ),讀進(jìn)內(nèi)存后在仍然是按類別順序存放。這樣順序取一部分作為驗(yàn)證集,很大程度上會(huì)減少一個(gè)類別的訓(xùn)練樣本數(shù),對(duì)該類別的預(yù)測準(zhǔn)確率會(huì)有所下降。所以首先考慮打亂訓(xùn)練數(shù)據(jù)。

      在已經(jīng)向量化的訓(xùn)練數(shù)據(jù)的基礎(chǔ)上打亂數(shù)據(jù),首先合并data和label,打亂后再將數(shù)據(jù)和標(biāo)簽分離為trian.txt和train_label.txt。這里可以直接使用shell命令:

      1、將labels加到trian.txt的第一列

      paste -d" " train_labels.txt train.txt > train_to_shuf.txt

      2、隨機(jī)打亂文件行

      shuf train_to_shuf.txt -o train.txt

      3、 提取打亂后文件的第一列,保存到train_labels.txt

      cat train.txt | awk '{print $1}' > train_labels.txt

      4、刪除第一列l(wèi)abel.

      awk '{$1="";print $0}'  train.txt

      這樣再次以相同方式訓(xùn)練,準(zhǔn)確率由65%上升到75% 。

        改變網(wǎng)絡(luò)結(jié)構(gòu),增加隱層

      之前的網(wǎng)絡(luò)直接對(duì)輸入數(shù)據(jù)做softmax回歸,這里考慮增加隱層,數(shù)量并加入驗(yàn)證集觀察準(zhǔn)確率的變化情況。這里加入一個(gè)隱層,隱層節(jié)點(diǎn)數(shù)為500,激勵(lì)函數(shù)使用Relu。替換原來的網(wǎng)絡(luò)結(jié)構(gòu),準(zhǔn)確率進(jìn)一步上升。

        正則化,改善過擬合

      觀察模型對(duì)訓(xùn)練集的擬合程度到90%+,而通過上步對(duì)訓(xùn)練數(shù)據(jù)的準(zhǔn)確率為76%,一定程度上出現(xiàn)了過擬合的現(xiàn)象,這里在原有cost function中上加入正則項(xiàng),希望減輕過擬合的現(xiàn)象。這里使用L2正則。連同上步部分的代碼如下:

      #!/usr/bin/python

      #-*-coding:utf-8-*-


      LAYER_NODE1 = 500 # layer1 node num

      INPUT_NODE = 5000

      OUTPUT_NODE = 10

      REG_RATE = 0.01


      import tensorflow as tf

      from datasets import datasets


      def interface(inputs, w1, b1, w2,b2):

          """

              compute forword progration result

          """

          lay1 = tf.nn.relu(tf.matmul(inputs, w1) + b1)

          return tf.nn.softmax(tf.matmul(lay1, w2) + b2) # need softmax??


      data_sets = datasets()

      data_sets.read_train_data(".", True)


      sess = tf.InteractiveSession()


      x = tf.placeholder(tf.float32, [None, INPUT_NODE], name="x-input")

      y_ = tf.placeholder(tf.float32, [None, OUTPUT_NODE], name="y-input")


      w1 = tf.Variable(tf.truncated_normal([INPUT_NODE, LAYER_NODE1], stddev=0.1))

      b1 = tf.Variable(tf.constant(0.0, shape=[LAYER_NODE1]))


      w2 = tf.Variable(tf.truncated_normal([LAYER_NODE1, OUTPUT_NODE], stddev=0.1))

      b2 = tf.Variable(tf.constant(0.0, shape=[OUTPUT_NODE]))


      y = interface(x, w1, b1, w2, b2)


      cross_entropy = -tf.reduce_sum(y_ * tf.log(y + 1e-10))

      regularizer = tf.contrib.layers.l2_regularizer(REG_RATE)

      regularization = regularizer(w1) + regularizer(w2)

      loss = cross_entropy + regularization



      train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)


      #training

      tf.global_variables_initializer().run()

      saver = tf.train.Saver()


      cv_feed = {x: data_sets.cv.text, y_: data_sets.cv.label}

      correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

      acc = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))


      for i in range(5000):

          if i % 200 == 0:

              cv_acc = sess.run(acc, feed_dict=cv_feed)

              print "train steps: %d, cv accuracy is %g " % (i, cv_acc)

          batch_xs, batch_ys = data_sets.train.next_batch(100)

          train_step.run({x: batch_xs, y_: batch_ys})


      path = saver.save(sess, "./model4/model.md")

        PCA處理

      一方面對(duì)文本向量集是嚴(yán)重稀疏的矩陣,而且維度較大,一方面影響訓(xùn)練速度,一方面消耗內(nèi)存。這里考慮對(duì)數(shù)據(jù)進(jìn)行PCA處理。該部分希望保存99%的差異率,得到相應(yīng)的k,即對(duì)應(yīng)的維度。

      #!/usr/bin/python

      #-*-coding:utf-8-*-

      """

          PCA for datasets


      """

      import os

      import sys

      import commands

      import numpy

      from contextlib import nested

      from datasets import datasets


      ORIGIN_DIM = 5000


      def pca(origin_mat):

          """

              gen matrix using pca

              row of origin_mat is one sample of dataset

              col of origin_mat is one feature

              return matrix  U, s and  V 

          """

          # mean,normaliza1on

          avg = numpy.mean(origin_mat, axis=0)

          # covariance matrix

          cov = numpy.cov(origin_mat-avg,rowvar=0)

          #Singular Value Decomposition

          U, s, V = numpy.linalg.svd(cov, full_matrices=True)


          k = 1;

          sigma_s = numpy.sum(s)

          # chose smallest k for 99% of variance retained 

          for k in range(1, ORIGIN_DIM+1):

              variance = numpy.sum(s[0:k]) / sigma_s

              print "k = %d, variance is %f" % (k, variance)

              if variance >= 0.99:

                  break


          if k == ORIGIN_DIM:

              print "some thing unexpected , k is same as ORIGIN_DIM"

              exit(1)


          return U[:, 0:k], k


      if __name__ == '__main__':

          """

              main, read train.txt, and do pca

              save file to train_pca.txt

          """

          data_sets = datasets()

          train_text, _ = data_sets.read_from_disk(".", "train", one_hot=False)


          U, k = pca(train_text)

          print "U shpae: ", U.shape

          print "k is : ", k


          text_pca = numpy.dot(train_text, U)

          text_num = text_pca.shape[0]

          print "text_num in pca is ", text_num


          with open("./train_pca.txt", "a+") as f:

              for i in range(0, text_num):

                  f.write(" ".join(map(str, text_pca[i,:])) + "\n")

      最終得到k=2583。該部分準(zhǔn)確率有所提高但影響不大。

        調(diào)整網(wǎng)絡(luò)參數(shù)

      該部分主要根據(jù)嚴(yán)重集和測試集的表現(xiàn)不斷調(diào)整網(wǎng)路參數(shù),包括學(xué)習(xí)率、網(wǎng)路層數(shù)、每層節(jié)點(diǎn)個(gè)數(shù)、正則損失、迭代次數(shù)、batch大小等。最終得到80%的準(zhǔn)確率。

        小結(jié)

      對(duì)神經(jīng)網(wǎng)路進(jìn)行初步優(yōu)化,由原來的65%的準(zhǔn)確率提高到80%,主要的提高在于訓(xùn)練數(shù)據(jù)的隨機(jī)化,以及網(wǎng)絡(luò)結(jié)構(gòu)的調(diào)整。為提升訓(xùn)練速度,同時(shí)減少內(nèi)存消耗,對(duì)數(shù)據(jù)進(jìn)行了降維操作。

      之后對(duì)代碼的結(jié)構(gòu)進(jìn)行了整理,這里沒有提及,該部分代碼包括 nn_interface.pynn_train.py 分別實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的定義以及訓(xùn)練流程的管理。

      后面會(huì)結(jié)合tensorflow的使用技巧對(duì)訓(xùn)練進(jìn)行進(jìn)一步優(yōu)化。

      雷鋒網(wǎng)相關(guān)文章:

      手把手教你用 TensorFlow 實(shí)現(xiàn)文本分類(上)

      手把手教你如何用 TensorFlow 實(shí)現(xiàn)基于 DNN 的文本分類


      “TensorFlow & 神經(jīng)網(wǎng)絡(luò)算法高級(jí)應(yīng)用班”開課了!

      最受歡迎的谷歌TensorFlow 框架,ThoughtWorks大牛教你玩轉(zhuǎn)深度學(xué)習(xí)!

      課程鏈接:http://www.mooc.ai/course/82

      加入AI慕課學(xué)院人工智能學(xué)習(xí)交流QQ群:624413030,與AI同行一起交流成長



      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

      手把手教你用 TensorFlow 實(shí)現(xiàn)文本分類(下)

      分享:
      相關(guān)文章

      編輯

      聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請?jiān)L問:yanxishe.com
      當(dāng)月熱門文章
      最新文章
      請?zhí)顚懮暾埲速Y料
      姓名
      電話
      郵箱
      微信號(hào)
      作品鏈接
      個(gè)人簡介
      為了您的賬戶安全,請驗(yàn)證郵箱
      您的郵箱還未驗(yàn)證,完成可獲20積分喲!
      請驗(yàn)證您的郵箱
      立即驗(yàn)證
      完善賬號(hào)信息
      您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說
      主站蜘蛛池模板: k频道国产在线观看| 久久尤物av天堂日日综合| 囊谦县| 天堂αv亚洲αv日韩在线| 久久无码高潮喷水抽搐| 亚洲日产专区| 少妇一晚三次一区二区三区| 中文日产乱幕九区无线码| 麻豆国产va免费精品高清在线| 成年女人黄小视频| 色屁屁www影院免费观看入口| 性色欲情网站iwww| 国产日韩精品视频无码| 丁香婷婷综合激情五月色| 午夜精品变态另类AV| 亚洲video| 亚洲啊啊啊一区二区三区| 日韩新无码精品毛片| 性一交一乱一伦一视频一二三区 | 国产又色又爽又黄刺激视频| 亚洲а∨天堂久久精品9966| 97人妻免费碰视频碰免| 自拍偷拍欧美| 久草在线资源| 国产精品第| 久久热这里只有精品国产| 夜夜爽7777精品国产三级| 在线天堂www在线| 欧美交换配乱吟粗大25p| 亚洲一区| 亚洲VA| 岛国av在线| 四虎永久在线精品免费视频观看| 精品视频免费在线| 一本色道久久综合亚洲精品| 狠狠综合亚洲综合亚洲色| 男人av无码天堂| 久久久久8888| 连江县| 无码AV无码免费一区二区| 欧洲无码成人|