手摸手學ModelArts】Copy攻城獅信手”粘“來 AI 對對聯

      網友投稿 767 2025-03-31

      前言


      ?

      農歷新年將至,聽說華為云 AI 又將開啟智能對對聯迎接牛氣沖天,讓我們拭目以待!作為資深 Copy 攻城獅,想要自己實現一個對對聯的模型,是不能可能完成的任務,因此我搜羅了不少前人的實踐案例,今天想和大家分享的是 和鯨社區的 rua年糕 貢獻的項目-AI 對聯,基于 ModelArts 的 「我的筆記本」實現。

      ?

      一、環境準備

      準備環境前,先嘮叨幾句:ModelArts 是面向開發者的一站式AI開發平臺,ModelArts 在人工智能三要素中都有非常出色的表現,數據方面提供海量數據預處理及半自動化標注,算法方面除了開發者自己開發還=提供大量的預置算法和訂閱算法可供選擇,算力方面目前開發環境提供免費算力以及即點即用的「我的筆記本」。目前個人比較中意的功能就是「我的筆記本」,如果您體驗過 MindSpore 教程的 「Run in ModelArts」,您會發現其實教程中鏈接的就是 ModelArts 的 「我的筆記本」模塊,具體體驗可閱讀我的歷史文章5分鐘在線體驗MindSpore的圖層IR--MindIR。

      相比常規的開發先要裝一堆的環境和軟件,基于 ModelArts 的 AI 開發似乎變得更簡單,理論上有能上網的設備就夠了,比如 pad,然后僅僅需要注冊一個華為云賬號并實名認證。當然,ModelArts準備工作并不僅僅是這些,比如如需用到 OBS 還需生成訪問密鑰并完成 ModelArts 全局配置。具體操作請參考ModelArts-Lab:https://gitee.com/ModelArts/ModelArts-Lab。

      Free 的「我的筆記本」就在 ModelArts 總覽頁底部的開發工具卡片中,點擊「立即體驗」即可開啟一個默認的 CPU 環境的 JupyterLab,我們可以在右邊的「切換規格」欄進行環境或者規格的切換。需要注意的是:切換資源后,將影響實例下所有Notebook與Terminal。Notebook中執行的所有變量將失效,Terminal需要重新打開,手動安裝包不再生效,需要重新執行。 目前, CPU 和 GPU 環境支持 Conda-python3 、Pytorch-1.0.0、TensorFlow-1.13.1等8種Notebook環境,不過使用 GPU 需要注意:1、免費規格用于使用體驗,會在1小時后自動停止;2、免費算力不包含對象存儲服務(OBS)存儲資源費用。 如果想使用 MindSpore 框架,可以從 MindSpore 官方文檔教程中的 「Run in ModelArts」進行跳轉到帶有 MindSpore 框架的 JupyterLab。

      二、Seq2Seq 簡介

      Seq2Seq是 Google 在 2017年開源的一款用于 TensorFlow 的通用編碼器&解碼器框架(encoder-decoder framework),可用于機器翻譯、文本摘要、會話建模、圖像描述等。

      論文地址: https://arxiv.org/abs/1703.03906

      三、Copy 實踐

      新建 TensorFlow 1.13.1 環境的 notebook 文件,開始代碼編(kao)寫(bei)。

      數據集下載

      couplet-dataset 盡管比較陳舊,但擁有 70 萬條數據,應該夠實現一個簡單的對對聯模型。

      !wget?https://github.com/wb14123/couplet-dataset/releases/download/1.0/couplet.tar.gz

      !tar?-xzvf?couplet.tar.gz

      !mkdir?couplet/model

      依賴安裝及引用

      !pip?install?klab-autotime

      !pip?install?backcall

      import?codecs

      import?numpy?as?np

      from?keras.models?import?Model

      from?keras.layers?import?*

      from?keras.callbacks?import?Callback

      #?顯示cell運行時長

      %load_ext?klab-autotime

      #?使用GPU

      import?os

      os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"

      #?The?GPU?id?to?use,?usually?either?"0"?or?"1"

      os.environ["CUDA_VISIBLE_DEVICES"]="0"

      數據處理

      #?定義參數

      min_count?=?2

      maxlen?=?16

      batch_size?=?64

      char_size?=?128

      train_input_path?=?'couplet/train/in.txt'

      train_output_path?=?'couplet/train/out.txt'

      test_input_path?=?'couplet/test/in.txt'

      test_output_path?=?'couplet/test/out.txt'

      #?數據讀取與切分

      def?read_data(txtname):

      txt?=?codecs.open(txtname,?encoding='utf-8').readlines()

      txt?=?[line.strip().split('?')?for?line?in?txt]??????#?每行按空格切分

      txt?=?[line?for?line?in?txt?if?len(line)?<=?maxlen]??#?過濾掉字數超過maxlen的對聯

      return?txt

      模型定義

      def?gated_resnet(x,?ksize=3):

      #?門卷積?+?殘差

      x_dim?=?K.int_shape(x)[-1]

      xo?=?Conv1D(x_dim*2,?ksize,?padding='same')(x)

      return?Lambda(lambda?x:?x[0]?*?K.sigmoid(x[1][...,?:x_dim])?\

      +?x[1][...,?x_dim:]?*?K.sigmoid(-x[1][...,?:x_dim]))([x,?xo])

      x_in?=?Input(shape=(None,))

      x?=?x_in

      x?=?Embedding(len(chars)+1,?char_size)(x)

      x?=?Dropout(0.25)(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?Dense(len(chars)+1,?activation='softmax')(x)

      其他代碼此處就不再貼了,建議直接參考源碼出處,或者訪問https://github.com/hu-qi/modelarts-couplet。此處我選擇 200 個 Epoch,訓練過程如下圖: 從圖中明顯可以看出評估函數輸出的下聯不斷地在調整。當訓練完成之后我們便煉的了簡單能使用的丹--AI 對對聯模型,緊接著測試一下:

      上聯:天增歲月人增壽

      下聯:國滿春秋我成春

      上聯:鼠去牛來聞虎嘯

      下聯:羊來馬去看龍吟

      上聯:流光溢彩氣沖斗牛

      下聯:春色流輝風震春蟲

      不錯不錯,還是挺工整通順的!

      當然實踐中也并不是一帆風順,訓練過程中如果遇到續期提示,請務必要手動點擊,不然又得重啟 Notebook 。續期就對了,盡管我不太清除能續幾次,但續期就不會導致訓練中斷。

      前言

      農歷新年將至,聽說華為云 AI 又將開啟智能對對聯迎接牛氣沖天,讓我們拭目以待!作為資深 Copy 攻城獅,想要自己實現一個對對聯的模型,是不能可能完成的任務,因此我搜羅了不少前人的實踐案例,今天想和大家分享的是 和鯨社區的 rua年糕 貢獻的項目-AI 對聯,基于 ModelArts 的 「我的筆記本」實現。

      一、環境準備

      準備環境前,先嘮叨幾句:ModelArts 是面向開發者的一站式AI開發平臺,ModelArts 在人工智能三要素中都有非常出色的表現,數據方面提供海量數據預處理及半自動化標注,算法方面除了開發者自己開發還=提供大量的預置算法和訂閱算法可供選擇,算力方面目前開發環境提供免費算力以及即點即用的「我的筆記本」。目前個人比較中意的功能就是「我的筆記本」,如果您體驗過 MindSpore 教程的 「Run in ModelArts」,您會發現其實教程中鏈接的就是 ModelArts 的 「我的筆記本」模塊,具體體驗可閱讀我的歷史文章5分鐘在線體驗MindSpore的圖層IR--MindIR。

      相比常規的開發先要裝一堆的環境和軟件,基于 ModelArts 的 AI 開發似乎變得更簡單,理論上有能上網的設備就夠了,比如 pad,然后僅僅需要注冊一個華為云賬號并實名認證。當然,ModelArts準備工作并不僅僅是這些,比如如需用到 OBS 還需生成訪問密鑰并完成 ModelArts 全局配置。具體操作請參考ModelArts-Lab:https://gitee.com/ModelArts/ModelArts-Lab。

      Free 的「我的筆記本」就在 ModelArts 總覽頁底部的開發工具卡片中,點擊「立即體驗」即可開啟一個默認的 CPU 環境的 JupyterLab,我們可以在右邊的「切換規格」欄進行環境或者規格的切換。需要注意的是:切換資源后,將影響實例下所有Notebook與Terminal。Notebook中執行的所有變量將失效,Terminal需要重新打開,手動安裝包不再生效,需要重新執行。 目前, CPU 和 GPU 環境支持 Conda-python3 、Pytorch-1.0.0、TensorFlow-1.13.1等8種Notebook環境,不過使用 GPU 需要注意:1、免費規格用于使用體驗,會在1小時后自動停止;2、免費算力不包含對象存儲服務(OBS)存儲資源費用。 如果想使用 MindSpore 框架,可以從 MindSpore 官方文檔教程中的 「Run in ModelArts」進行跳轉到帶有 MindSpore 框架的 JupyterLab。

      二、Seq2Seq 簡介

      Seq2Seq是 Google 在 2017年開源的一款用于 TensorFlow 的通用編碼器&解碼器框架(encoder-decoder framework),可用于機器翻譯、文本摘要、會話建模、圖像描述等。

      論文地址: https://arxiv.org/abs/1703.03906

      三、Copy 實踐

      新建 TensorFlow 1.13.1 環境的 notebook 文件,開始代碼編(kao)寫(bei)。

      數據集下載

      couplet-dataset 盡管比較陳舊,但擁有 70 萬條數據,應該夠實現一個簡單的對對聯模型。

      !wget?https://github.com/wb14123/couplet-dataset/releases/download/1.0/couplet.tar.gz

      !tar?-xzvf?couplet.tar.gz

      !mkdir?couplet/model

      數據集下載

      couplet-dataset 盡管比較陳舊,但擁有 70 萬條數據,應該夠實現一個簡單的對對聯模型。

      !wget?https://github.com/wb14123/couplet-dataset/releases/download/1.0/couplet.tar.gz

      !tar?-xzvf?couplet.tar.gz

      !mkdir?couplet/model

      依賴安裝及引用

      !pip?install?klab-autotime

      !pip?install?backcall

      import?codecs

      import?numpy?as?np

      from?keras.models?import?Model

      from?keras.layers?import?*

      from?keras.callbacks?import?Callback

      #?顯示cell運行時長

      %load_ext?klab-autotime

      #?使用GPU

      import?os

      【手摸手學ModelArts】Copy攻城獅信手”粘“來 AI 對對聯

      os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"

      #?The?GPU?id?to?use,?usually?either?"0"?or?"1"

      os.environ["CUDA_VISIBLE_DEVICES"]="0"

      依賴安裝及引用

      !pip?install?klab-autotime

      !pip?install?backcall

      import?codecs

      import?numpy?as?np

      from?keras.models?import?Model

      from?keras.layers?import?*

      from?keras.callbacks?import?Callback

      #?顯示cell運行時長

      %load_ext?klab-autotime

      #?使用GPU

      import?os

      os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"

      #?The?GPU?id?to?use,?usually?either?"0"?or?"1"

      os.environ["CUDA_VISIBLE_DEVICES"]="0"

      數據處理

      #?定義參數

      min_count?=?2

      maxlen?=?16

      batch_size?=?64

      char_size?=?128

      train_input_path?=?'couplet/train/in.txt'

      train_output_path?=?'couplet/train/out.txt'

      test_input_path?=?'couplet/test/in.txt'

      test_output_path?=?'couplet/test/out.txt'

      #?數據讀取與切分

      def?read_data(txtname):

      txt?=?codecs.open(txtname,?encoding='utf-8').readlines()

      txt?=?[line.strip().split('?')?for?line?in?txt]??????#?每行按空格切分

      txt?=?[line?for?line?in?txt?if?len(line)?<=?maxlen]??#?過濾掉字數超過maxlen的對聯

      return?txt

      數據處理

      #?定義參數

      min_count?=?2

      maxlen?=?16

      batch_size?=?64

      char_size?=?128

      train_input_path?=?'couplet/train/in.txt'

      train_output_path?=?'couplet/train/out.txt'

      test_input_path?=?'couplet/test/in.txt'

      test_output_path?=?'couplet/test/out.txt'

      #?數據讀取與切分

      def?read_data(txtname):

      txt?=?codecs.open(txtname,?encoding='utf-8').readlines()

      txt?=?[line.strip().split('?')?for?line?in?txt]??????#?每行按空格切分

      txt?=?[line?for?line?in?txt?if?len(line)?<=?maxlen]??#?過濾掉字數超過maxlen的對聯

      return?txt

      模型定義

      def?gated_resnet(x,?ksize=3):

      #?門卷積?+?殘差

      x_dim?=?K.int_shape(x)[-1]

      xo?=?Conv1D(x_dim*2,?ksize,?padding='same')(x)

      return?Lambda(lambda?x:?x[0]?*?K.sigmoid(x[1][...,?:x_dim])?\

      +?x[1][...,?x_dim:]?*?K.sigmoid(-x[1][...,?:x_dim]))([x,?xo])

      x_in?=?Input(shape=(None,))

      x?=?x_in

      x?=?Embedding(len(chars)+1,?char_size)(x)

      x?=?Dropout(0.25)(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?Dense(len(chars)+1,?activation='softmax')(x)

      其他代碼此處就不再貼了,建議直接參考源碼出處,或者訪問https://github.com/hu-qi/modelarts-couplet。此處我選擇 200 個 Epoch,訓練過程如下圖: 從圖中明顯可以看出評估函數輸出的下聯不斷地在調整。當訓練完成之后我們便煉的了簡單能使用的丹--AI 對對聯模型,緊接著測試一下:

      上聯:天增歲月人增壽

      下聯:國滿春秋我成春

      上聯:鼠去牛來聞虎嘯

      下聯:羊來馬去看龍吟

      上聯:流光溢彩氣沖斗牛

      下聯:春色流輝風震春蟲

      不錯不錯,還是挺工整通順的!

      當然實踐中也并不是一帆風順,訓練過程中如果遇到續期提示,請務必要手動點擊,不然又得重啟 Notebook 。續期就對了,盡管我不太清除能續幾次,但續期就不會導致訓練中斷。

      模型定義

      def?gated_resnet(x,?ksize=3):

      #?門卷積?+?殘差

      x_dim?=?K.int_shape(x)[-1]

      xo?=?Conv1D(x_dim*2,?ksize,?padding='same')(x)

      return?Lambda(lambda?x:?x[0]?*?K.sigmoid(x[1][...,?:x_dim])?\

      +?x[1][...,?x_dim:]?*?K.sigmoid(-x[1][...,?:x_dim]))([x,?xo])

      x_in?=?Input(shape=(None,))

      x?=?x_in

      x?=?Embedding(len(chars)+1,?char_size)(x)

      x?=?Dropout(0.25)(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?gated_resnet(x)

      x?=?Dense(len(chars)+1,?activation='softmax')(x)

      其他代碼此處就不再貼了,建議直接參考源碼出處,或者訪問https://github.com/hu-qi/modelarts-couplet。此處我選擇 200 個 Epoch,訓練過程如下圖: 從圖中明顯可以看出評估函數輸出的下聯不斷地在調整。當訓練完成之后我們便煉的了簡單能使用的丹--AI 對對聯模型,緊接著測試一下:

      上聯:天增歲月人增壽

      下聯:國滿春秋我成春

      上聯:鼠去牛來聞虎嘯

      下聯:羊來馬去看龍吟

      上聯:流光溢彩氣沖斗牛

      下聯:春色流輝風震春蟲

      不錯不錯,還是挺工整通順的!

      當然實踐中也并不是一帆風順,訓練過程中如果遇到續期提示,請務必要手動點擊,不然又得重啟 Notebook 。續期就對了,盡管我不太清除能續幾次,但續期就不會導致訓練中斷。

      四、總結

      此次實踐的數據集和 notebook 已上傳到 github :https://github.com/hu-qi/modelarts-couplet, 另外對聯數據也共享到 ModelArts AI Gallery:couplet-dataset:70萬對聯數據集,歡迎取閱!

      華為云開發了AI寫春聯、送祝福的小程序,采用GPT深度學習模型,通過海量文本數據在云端預訓練學習,基于在公開對聯數據上進行微調,最終實現春聯自動生成。“云上過新年”,AI春聯也能擁有滿滿年味,寫春聯,甭發愁。新版小程序即將上線,可在微信搜索EI體驗空間輸入關鍵詞自動生成。

      重要的事情說三遍:

      記得關注「EI體驗空間」小程序!

      記得關注「EI體驗空間」小程序!

      記得關注「EI體驗空間」小程序!

      AI AI開發平臺ModelArts MindSpore

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel中通過出生日計算年齡的方法
      下一篇:excel怎樣在單元格內合并文本和日期
      相關文章
      91麻豆国产自产在线观看亚洲| 亚洲午夜成人精品电影在线观看| 国产亚洲美女精品久久久久狼| 国产亚洲精品线观看动态图| 亚洲精品无码成人片在线观看 | 亚洲一区二区三区高清| 久久久久亚洲精品影视| 亚洲av无码国产精品夜色午夜| 国产亚洲一区二区三区在线不卡 | 亚洲高清视频一视频二视频三| 国产亚洲精彩视频| 亚洲AV无码专区日韩| 亚洲高清无码专区视频| 国产成人亚洲精品91专区手机| 亚洲午夜无码AV毛片久久| 亚洲日本乱码在线观看| 精品亚洲综合在线第一区| 亚洲日本中文字幕| 亚洲精品国产成人中文| 亚洲人成电影网站| 亚洲精华国产精华精华液网站| 亚洲av成本人无码网站| 亚洲男人av香蕉爽爽爽爽| 亚洲中文字幕久久精品无码APP| 亚洲人成人无码网www电影首页| 亚洲va无码专区国产乱码| 亚洲自偷自偷精品| 亚洲人成电影网站| 亚洲av乱码中文一区二区三区| 亚洲成人国产精品| 亚洲精品无码不卡在线播HE| 亚洲国产成人私人影院| 亚洲图片激情小说| 亚洲AV无码成人精品区日韩| 男人的天堂亚洲一区二区三区 | 久久国产亚洲精品| 久久久亚洲精华液精华液精华液| 亚洲成AV人在线观看网址| 亚洲色无码专区在线观看| 久久亚洲精品中文字幕| 国产精品亚洲精品|