真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)

引言:  

公司主營業(yè)務:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出蘿北免費做網(wǎng)站回饋大家。

不知不覺春節(jié)假期馬上到來,在今年的春節(jié)話題中,不難發(fā)現(xiàn),除了七大姑八大姨親切問候這些常規(guī)話題,人工智能的蹤跡也是隨處可見。AI在以全新的面貌向我們展示值得期待的未來,比如今天,我們可以用PaddlePaddle來嘗試寫副智能春聯(lián)。過年貼春聯(lián)已經(jīng)成為一個傳統(tǒng)習俗,而商場里可選的內(nèi)容不多,很多人想親自出馬,可惜又不大懂平仄對仗。能不能用人工智能幫我們寫春聯(lián)呢?今年春節(jié),百度、網(wǎng)易和央視網(wǎng)推出了“智能春聯(lián)H5”,只要給出2-4個漢字,它就能據(jù)此“寫”出一副非常具有觀賞性的藏頭春聯(lián)。

是什么讓機器擁有對春聯(lián)這項技能?通過智能春聯(lián)H5,“刷臉”對春聯(lián)只需幾秒就能實現(xiàn),而這背后是一系列“不可描述”的高深技術。視覺方面,主要應用了人臉檢測、屬性分析、人臉融合等技術,可對圖片中的人臉進行檢測,分析人臉對應的年齡、性別、顏值、微笑指數(shù)、是否佩戴眼鏡等信息,并通過一個詞語概括人臉的特性;進而將圖片中的人臉,與指定模板圖中的人臉進行融合,得到新的圖片。這些技術的難度在于,需要對各種角度的人臉進行檢測,并且能夠提取人臉的五官特征,以便能夠生成與原始人臉相似,但也和模板人臉神似,且毫無違和感的新圖片。

其次是自然語言處理(NLP)方面,基于百度深度學習框架PaddlePaddle先進的神經(jīng)網(wǎng)絡機器翻譯技術,可以將春聯(lián)創(chuàng)作轉化為“翻譯”的過程,所不同的是,翻譯是在兩種語言之間建立聯(lián)系,而春聯(lián)是在同一種語言中建立聯(lián)系。當然,有些人可能會中招“彩蛋”,這些不是AI寫的春聯(lián)。比如你刷臉得出“戲精”這個關鍵詞,就會獲得一副“流量體質(zhì)天生有戲,主角光環(huán)蓋不住你”,橫批“過足戲癮”的春聯(lián),這么霸氣十足可是由人工專門為你埋的梗哦!這樣的春聯(lián)出現(xiàn)在朋友圈里,毫無疑問,點贊人數(shù)會瘋狂UpUpUp……

讓我們嘗試體驗一下吧!PaddlePaddle作為深度學習框架,不僅支持深度學習算法的開發(fā)和調(diào)研,而且官方發(fā)布的模型庫(https://github.com/PaddlePaddle/models)里面匯集了各種領先的圖像分類、自然語言處理算法。通過這些算法,我們可以很方便地實現(xiàn)各種好玩有趣的功能,比如:智能春聯(lián)。

如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)

智能春聯(lián)有各種玩法,可以根據(jù)用戶輸入的關鍵詞,生成一副對聯(lián),實現(xiàn)定制化的專屬春聯(lián),比如:用戶輸入“好運”,百度的人工智能春聯(lián)生成程序就會創(chuàng)作出上下聯(lián)為“一年好運滿園錦繡,萬眾同心遍地輝煌”、橫批為“春光滿園”的春聯(lián);用戶輸入自己的名字,智能春聯(lián)生成程序可以把自己的名字藏在生成的春聯(lián)中,形成個性化非常強的春聯(lián),用來發(fā)送給自己的朋友;甚至用戶不需要輸入關鍵詞,只需要拍一張照片,然后就可以根據(jù)這張照片生成圖文并茂的春聯(lián)。那這些功能都是怎么做到的呢?這里我們給大家介紹一下如何用PaddlePaddle開發(fā)一套專屬的智能春聯(lián)生成系統(tǒng)。

如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)

一、我們的系統(tǒng)需要先做到能理解圖像的內(nèi)容,比如:用戶輸入的到底是什么?

這是一個典型圖像分類的問題,圖像分類是根據(jù)圖像的語義信息對不同類別圖像進行區(qū)分,是計算機視覺中重要的基礎問題,是物體檢測、圖像分割、物體跟蹤、行為分析、人臉識別等其他高層視覺任務的基礎,在許多領域都有著廣泛的應用。在深度學習時代,圖像分類的準確率大幅度提升,PaddlePaddle在經(jīng)典的數(shù)據(jù)集ImageNet上,開放了常用的模型,包括AlexNet、VGG、GoogLeNet、ResNet、Inception-v4、MobileNet、DPN(Dual Path Network)、SE-ResNeXt模型,同時也開源了訓練的模型方便用戶下載使用?;谶@些圖像分類算法,可以知道用戶輸入的類別,用類似的技術,還可以知道一些更具體的屬性,比如:對于一張人臉的照片,可以知道性別、年齡這些屬性。有了圖片的這些特征和屬性之后,我們可以進行關鍵詞擴展。比如:對于年輕的女性可以聯(lián)想出一些關鍵詞“風華絕代”、“秀麗”、“端莊”等等,對于小孩可以聯(lián)想出關鍵詞“活潑可愛”、“機智”、“勇敢”等等。

如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)

二、拿到這些關鍵詞之后,接下來的任務是什么?

根據(jù)一個關鍵詞,自動生成一副相關的春聯(lián)。春聯(lián)的生成過程可以分成2個步驟,第一個步驟是從關鍵詞生成一副上聯(lián)。然后再根據(jù)上聯(lián)生成一副下聯(lián)。那么如何實現(xiàn)這2個生成步驟呢?我們發(fā)現(xiàn)這個任務跟機器翻譯很相似,可以用類似的技術來實現(xiàn)。機器翻譯(Machine Translation, MT)是用計算機來實現(xiàn)不同語言之間翻譯的技術。被翻譯的語言通常稱為源語言(Source Language),翻譯成的結果語言稱為目標語言(Target Language)。機器翻譯即實現(xiàn)從源語言到目標語言轉換的過程,是自然語言處理的重要研究領域之一。PaddlePaddle的模型庫(PaddlePaddle/models)里面,提供了兩個機器翻譯算法的實現(xiàn),一個是經(jīng)典的基于LSTM的Seq2Seq模型,另一個是最新的基于Attention的Transformer模型。 類比于機器翻譯任務,可以把智能春聯(lián)輸入的關鍵詞看作是機器翻譯里的源語言句子,然后把根據(jù)關鍵詞生成的上聯(lián),看作是機器翻譯里的目標語言譯文。相較于此前 Seq2Seq 模型中廣泛使用的循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network, RNN),使用(Self)Attention 進行輸入序列到輸出序列的變換主要具有以下優(yōu)勢:計算復雜度更小、計算并發(fā)度更高、更容易學到長距離的依賴關系。我們推薦使用翻譯效果更好的Transformer模型,通常Transfomer可以得到比Seq2Seq更好的翻譯效果。

如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)

圖2. Transformer模型核心組件Multi-Head Attention

 def  scaled_dot_product_attention(q, k, v, attn_bias, d_key, dropout_rate):

         """

        Scaled  Dot-Product Attention

         """

        scaled_q  = layers.scale(x=q, scale=d_key**-0.5)

        product =  layers.matmul(x=scaled_q, y=k, transpose_y=True)

        if  attn_bias:

             product += attn_bias

        weights =  layers.softmax(product)

        if  dropout_rate:

             weights = layers.dropout(

                 weights,

                 dropout_prob=dropout_rate,

                 seed=ModelHyperParams.dropout_seed,

                 is_test=False)

        out =  layers.matmul(weights, v)

        return  out

圖3. Scaled Dot-Product Attention的PaddlePaddle代碼實現(xiàn)

三、選定了使用的生成算法之后,如何讓機器能夠?qū)W會寫春聯(lián)呢?

接下來就需要給系統(tǒng)準備訓練數(shù)據(jù)了,所謂“熟讀唐詩三百首”,對于機器來說,需要見到大量的春聯(lián),才能夠?qū)W會春聯(lián)里用詞和用字的規(guī)律。我們可以去互聯(lián)網(wǎng)上找到大量的春聯(lián)數(shù)據(jù),比如:“爆竹傳吉語”“臘梅報新春”等等,然后把它們作為訓練數(shù)據(jù),通常需要幾萬條。有了這些數(shù)據(jù)后,我們從上聯(lián)里抽取出關鍵詞,“爆竹”-> “爆竹傳吉語”,訓練一個從關鍵詞到上聯(lián)的生成模型;然后我們再用“爆竹傳吉語”“臘梅報新春”訓練一個從上聯(lián)到下聯(lián)的生成模型。

準備好訓練數(shù)據(jù)后,就可以啟動Transformer模型的訓練了,可以參考PaddlePaddle/models/neural_machine_translation/transformer里的命令。這個是英德翻譯的例子,在做關鍵詞到上聯(lián)的生成時,需要把訓練數(shù)據(jù)替換成“關鍵詞”到對應“春聯(lián)上聯(lián)”的數(shù)據(jù);在做上聯(lián)到下聯(lián)生成時,需要把訓練數(shù)據(jù)替換成“春聯(lián)上聯(lián)”到對應“春聯(lián)下聯(lián)”的數(shù)據(jù)。

python -u train.py \

   --src_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

   --trg_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

  --special_token  '''''' \

   --train_file_pattern  gen_data/wmt16_ende_data_bpe/train.tok.clean.bpe.32000.en-de \

--token_delimiter ' ' \

   --use_token_batch True \

  --batch_size  4096 \

  --sort_type  pool \

  --pool_size  200000

訓練完成后就可以得到一個關鍵詞到上聯(lián)的生成模型,還有一個從上聯(lián)到下聯(lián)的生成模型。注意生成過程,需要執(zhí)行2次Transformer的預測過程,先輸入一個關鍵詞,生成上聯(lián);然后輸入生成的上聯(lián),再生成一個下聯(lián)。具體生成參考以下命令。

python -u infer.py \

   --src_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

   --trg_vocab_fpath gen_data/wmt16_ende_data_bpe/vocab_all.bpe.32000 \

  --special_token  '''''' \

   --test_file_pattern  gen_data/wmt16_ende_data_bpe/newstest2016.tok.bpe.32000.en-de \

--token_delimiter ' ' \

  --batch_size 32  \

  model_path  trained_models/iter_100000.infer.model \

  beam_size 4 \

  max_out_len 255

根據(jù)以上PaddlePaddle官方模型庫提供的一些技術,就可以實現(xiàn)一個好玩的智能春聯(lián)系統(tǒng)了。當然還可以做很多有意思的擴展,比如,可以增加一些古詩詞作為訓練語料,使得生成的春聯(lián)內(nèi)容更為豐富;藏頭春聯(lián),把關鍵詞按字分開,通過Grid Beam Search的技術,保證生成的關鍵詞會在春聯(lián)特定的位置出現(xiàn)。

感興趣的朋友,可以收集好春聯(lián)訓練語料,便可嘗試實現(xiàn)一個好玩的智能春聯(lián)系統(tǒng)了。

Github地址:

https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleNLP/neural_machine_translation/transformer/README_cn.md


分享標題:如何用深度學習框架PaddlePaddle實現(xiàn)智能春聯(lián)
分享網(wǎng)址:http://weahome.cn/article/jijdhc.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部