您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

facebook翻譯功能不見了(《英雄聯盟手游》S1賽季有哪些新內容S1賽季新內容匯總) - 副本

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-03 02:35:44【】5人已围观

简介WHatsAPP沒有翻譯功能的嗎?我不會外語嗚嗚這個軟件本身沒得翻譯功能,要借助輔助工具哦不怕英文菜,就怕你不找工具。Tranworld翻譯助手來幫你WhatsApp/LINE聊天自動翻譯,支持手機,

WHatsAPP沒有翻譯功能的嗎?我不會外語嗚嗚

這個軟件本身沒得翻譯功能 ,要借助輔助工具哦

不怕英文菜,就怕你不找工具。

Tranworld翻譯助手來幫你

WhatsApp/LINE聊天自動翻譯,支持手機,支持粉絲計數

Tranworld翻譯助手 支持WhatsApp/Line自動聊天翻譯 支持多開

WhatsApp/LINE 每天新進來的客戶 每天去重復統計

Tranworld翻譯助手 自動翻譯 支持whatsapp Instagram tinder Twitter line zalo facebook telegram

facebook可以安裝翻譯插件嗎

要借助翻譯插件才可以哦,tranworld作為聊天實時翻譯器,可以進行whatsapp,line,zalo,telegram,messenger等平臺的聊天實時翻譯,

使用ai人工智能翻譯引擎,實現邊輸入文字邊智能翻譯為指定國家語言,

支持全球200多國家的語言實時聊天翻譯,即使不懂外語,也能輕松與國際友人進行深度業務上交流。

whatsapp telegram line zalo電報 出海社交神器,實時自動翻譯 ,可測試

ins的查看翻譯嘛沒有了,怎么回事?

方法:

先點主頁的右下角(一個小人的標志)然后點右上角(三條橫線),然后再出來的框左下角有個“設置”,點進去,然后點擊“賬戶”,點擊“語言”,選擇中文(簡體),ins會自動關閉,重新打開就可以了。

基本特性:

☆ 100%免費自定義設計的過濾器和邊框,例如XPro-II、Earlybird、Rise、Amaro、Hudson、Lo-fi、Sutro、Toaster、 Brannan、Inkwell、Walden、Hefe、Nashville、1977等等 [7] 

☆ 實時分享到新浪微博、Facebook、Twitter、Flickr、Tumblr和Foursquare

☆ 平行和放射狀移軸模糊特效可提供額外的景深效果

☆ 上傳不受限,即拍即傳即分享

☆ 通過接收和發送贊和評論與朋友互動

☆ iPhone前置和后置攝像頭的全面支持

以上內容參考 百度百科-Instagram

《英雄聯盟手游》S1賽季有哪些新內容S1賽季新內容匯總

《英雄聯盟手游》S1賽季有哪些新內容S1賽季新內容匯總,相信很多小伙伴對這一塊不太清楚,接下來小編就為大家介紹一下《英雄聯盟手游》S1賽季有哪些新內容S1賽季新內容匯總,有興趣的小伙伴可以來了解一下哦。

英雄聯盟手游S1賽季開啟時間

LOL手游2.0版本更新公告:(以下搬運自臺服公告,可能存在翻譯上的差異)

我們推出2021年的首次版本更新,包括一些超棒的新內容,例如一班新英雄!來自班德爾城的幾位高手將來到峽谷:庫奇、凱能、崔絲塔娜、露璐,當然還有提摩。你可以在最新活動「約德爾征途」中跟著他們一起冒險。我們也新增一些實用功能,例如房間特搜、全新延遲顯示和許多其他游戲改良。

最后,《激斗峽谷》即將推出第一個官方積分賽季,登上金牌即可獲得全新獎勵「榮耀蠻王泰達米爾」。

一起迎接新年和2.0版本更新!

全新

英雄

英勇投彈手庫奇

別被庫奇的外表騙了,他可不是只有濃密的胡子而已。這名英勇投彈手對和飛行器有關的一切都無比癡迷,他常常離開班德爾城,前往發明之都皮爾托福,追尋只有那里才有的航空發明。身為尖嘯之蛇的隊長,他無時無刻不警戒著空中的可疑敵機。

狂暴之心凱能

這名約德爾人擁有迅雷不及掩耳的速度,也是均衡秩序團最資深的成員。凱能致力于維護愛歐尼亞的神圣平衡,他利用數百年來累積的知識保護自己深愛的世界。不過身為狂暴之心,他也擁有如同暴風般的破壞力,而且他也不怕使用這股力量。

約德爾炮手崔絲塔娜

班德爾城的居民天生充滿好奇心,不過很少人像崔絲塔娜一樣深深著迷于潛藏在符文大地的種種冒險。崔絲塔娜受到史詩戰役和英勇戰士的傳說啟發,她知道自己的人生肯定會充滿「爆炸性」。多虧了火力十足的可靠大炮「砰爆」,這名約德爾炮手正往傳奇之路邁進。

精靈魔法使露璐

現實是你自己創造出來的,或者說是露璐創造出來的!這名精靈魔法使和她的精靈好友皮克斯穿梭符文大地,隨心所欲塑造世界的樣貌。露璐利用魔法將一切化為自己所思所想,有時雖然是一片好意,卻還是會產生相當慘重的后果。

迅捷斥候提摩

千萬別小看偵察隊的力量!任何小看偵察隊的人(其實就算沒小看也一樣)都必須面對提摩的制裁,他是班德爾城最令人敬畏的守護者。雖然個子小,不過這名迅捷斥候面對巨大危機時絕不畏縮。他懷抱無比的樂觀和勇氣闖蕩世界,一路收集各種勛章(就算偶爾搞一點小破壞也沒關系吧)。

功能

房間特搜

單排讓你心累?房間特搜讓玩家更容易進入預組隊伍進行對戰。房主可以將房間開放給好友或所有玩家加入(請見房間畫面右上角),玩家也可以搜尋公開房間加入(請見主頁左下角)。玩家可以按照房間類型篩選搜尋,房間特搜會根據玩家的社交關_和游戲偏好建議適合的隊伍。快來加入列隊吧!

延遲顯示

主頁不會有延遲顯示了!我們發現玩家看到的延遲顯示和實際的游戲體驗并不一致,所以我們改為顯示玩家目前使用的網路類型(WiFi、4G等),并且以新方式在游戲中顯示游玩時實際的Ping值。

社交分享

玩家現在可以把游戲結算記分板、個人表現、最常使用的英雄、賽季牌位、連勝、取得的新英雄、取得的新造型,以及排行榜畫面存到裝置相片庫或直接分享到Facebook。最適合在玩劫達成15/0后炫耀一下。

地圖說明

如果你想深入了解地貌(當你沒忙著農兵或注意敵方打野時),現在可以探索《激斗峽谷》地圖的細節。你可以盡情閱讀野怪、史詩級野怪、植物和建筑的各種資訊。

教學最佳化

教學功能強化,現在會根據玩家的對戰表現跳出提示。我們也進行了教學和第一個英雄解鎖畫面的視覺更新。

英雄專精表情

終極炫耀:英雄專精表情。英雄專精等級到達5級,玩家就能解鎖英雄專精表情。玩家可以裝備英雄專精表情,可以和其他局內表情一樣用來「溝通」。

造型

哀傷機器人阿姆姆

阿福騎士庫奇

彩虹戰機庫奇

星光戰士珍娜

星光戰士吉茵珂絲

雪嶺突襲凱能

星光戰士露璐

馴龍高手露璐

星光戰士拉克絲

_活兔提摩

第一滴血崔絲塔娜

弧光獵人法洛士

萬圣小惡摩

小小惡魔崔絲塔娜

黑貓魔法使露璐

閃能

星光戰士伊澤瑞爾

游戲系統

信號回復

現在玩家可以用信號回復讓隊友知道自己已收到信號。

飛龍/巴龍重生計時

計分板現在會顯示史詩級野怪(飛龍和巴龍納什)的重生計時。我們也改良了一些小地圖使用者介面。

計分板顯示邏輯

再也不能偷看了!現在只有玩家獲得視野看到敵方之后,計分板才會更新敵方資訊,而非持續即時更新。

新表情盤

現在可以按住英雄開啟表情盤,不用點入通訊面板。

系統訊息使用者介面

系統訊息不再擋住玩家畫面,讓他們看不見自己的英雄(例如投降表決失敗訊息不會在對戰中擋住視線),太好了!

詳細數據

在計分板的統計分頁,玩家可以查看更詳細的關鍵數據分析,包括物理和魔法防御道具提供的傷害減免準確數值(以百分比表示),以及技能加速和冷卻時間減免之間的轉換。

防御塔優先順序

防御塔現在會優先攻擊超級士兵,攻城士兵次之。得先解決超級士兵才行。

S1開始

《激斗峽谷》第一個官方積分賽季將從2021年1月8日開始!這也代表S0也即將結束。參與S0的玩家將在賽季結束后收到積分獎勵(所有參與者都能獲得參賽頭像,金牌以上的玩家更可獲得玩家徽章)。S1將有部分積分重置,賽季轉換期間積分模式將有3到4小時無法使用。

我們也推出第一個輝煌榮耀造型「榮耀蠻王泰達米爾」,送給金牌以上的玩家。他們絕無生機!

活動

我們已為《英雄聯盟:激斗峽谷》新增不少內容,不過感覺好像還少了什么。還是少了誰?或許這個小不點(或是小不點們)是故意「消失」的,用著簡單的障眼魔法隱藏自己,或是躲在秘密城市的隱密角落中。

但這些好奇心旺盛的小不點們再也按捺不住,等不及要去《激斗峽谷》冒險了。現在他們就像小蘑菇般在符文大地的各大城市四處竄出,為所到之處帶來滿滿的能量(和麻煩),時而帶電、時而爆炸,有時甚至還會變紫?

加入我們一起跋山涉水,找遍每只石怪底下,尋找《激斗峽谷》最新的英雄。打包好行李、擦亮你的靴子、_備好地圖,踏上偉大的約德爾征途!

其他備_

我們持續(也一定會繼續)調整配對系統,提升游戲品質和積分對戰體驗。

排行榜現在每10到15分鐘更新一次,而非每24小時更新一次。

我們改良了聊天功能,包括改良預組隊伍語音聊天圖像、好友名單篩選器和一些社交使用者體驗。

旅游找美食的app哪個好

出門旅游肯定有一件事是一定要去體驗的,那就是去品嘗美食了,但是想知道哪里游美食,肯定是需要去網上搜羅,其實游很多APP也是有這個功能的,下面推薦一些美食查詢app。

全球通用型

GoogelTrips

坐擁全球大多數國家城市地圖的google,會考慮開發出這款APP,我真的絲毫不覺得意外,它的功能性正如它的名字一般,與旅行相關的一切信息,你都能從中找到,美食自然也不會落下,基本上熱門的旅行目的地都能靠它。像不喜歡做攻略,說走就走的朋友,有了它,絕對會讓你旅程輕松非常多。

它家的美食分類很簡潔,不同種類的美食都有自己的排行榜,且都還有評分。但缺點也很明顯,它不支持中文,雖然不用買粉絲就能下載,但是因為需要從Google接收信息的關系,必須要搭梯子才可以。

Vizeat

你可能當過沙發客,也住過Airbnb,但你有在當地人家中用過餐嗎?或許這樣的旅行方式,會打開你全新的玩法。而Vizeat,就是一個帶你去當地人家中用餐的APP,在去年,它還被APPStore評為“Bestof”的APP之一。

相比起有容乃大的美食APP,這款能夠用的城市比較少一些,只有130+的國家可以使用,如果你近期要出國旅行,且大多是歐洲地區的國家,你可以考慮下載它去體驗一下。它支持中文,不用買粉絲也能正常使用。但是各位記得,用這個APP訂餐是需要提前預定,學習制作當地美食的話,要另繳費用的。

OpenTable

出國旅行訂餐,大家最恐懼的怕是打電話溝通吧,口語流利還行,要是不流利咋辦呢?真的要靠行李箱里的老干媽和方面面度日了嗎?大可不必如此,因為你還可以借助OpenTable。

OpenTable經常出國的朋友應該很熟悉,它主打功能就是預定。你只需通過APP進行城市的選擇,以及你感興趣的餐館,之后選擇好時間和用餐人數即可,因為是全部你自己手動選擇,你大可一邊用翻譯APP,一邊慢慢進行預訂。上邊餐廳的介紹也都非常全面,包括地址,用餐需知等等都會有。記得注冊會員,訂餐會有積分,積分可以幫你省錢。很可惜的是,它沒中文。

Zomato

出門在外,但凡是手機里裝了Zomato,基本上就不愁找不著好吃的。畢竟人家這幾年也不斷在壯大,其APP內所包含的國家及城市也越來越多,很多熱門國家都可以用它,像美國、英國、澳洲、加拿大、印度等等。

其實Zomato跟現在的大眾點評有點類似,它除了有常規的餐廳介紹以及各種參考信息外,還有美食博主們對該餐廳的評價,對比起刷星泛濫的yelp,Zomato的參考價值也會更高一些。當然,它家還很雞賊的開設了自己的外賣APP,類似大眾點評和美團外賣的關系。你可以在Zomato挑好餐廳,在酒店當肥宅,打開OrderbyZomato進行點餐等待配送。缺點嘛,你們猜得到的,它也不支持中文。

Delectable

我非常清楚,不少人出國,尤其是在一些紅酒、白葡萄酒的熱門產區,會被一些人忽悠買下好幾瓶酒,這邊托朋友幫忙帶,那邊又忙著發朋友圈得瑟,但是,你真的懂你買的酒嗎?即便是在一些高級餐廳,讓侍者幫你推薦也并不見得是個明智的做法。

考慮到酒的價格,原本不想把它放在美食APP的我決定還是列出來。Delectable的作用其實非常簡單,你只需將鏡頭對準酒的標簽,讓APP進行讀取掃描,之后關于這瓶酒的產地、年份、評級等相關信息都會一一羅列出來,遠比你瞎買要靠譜得多。

亞洲地區適用

UberEats

相比起去餐廳排隊等候,外賣永遠是奔波勞累一天的人最佳的慰藉。當然,在香港和臺灣你或許還能借助美團、餓了么,但是在一些其他國家,這兩個APP的優勢就沒了,這時候,打開UberEats,便可輕松獲得新鮮美食。

foodpanda

相比起UberEats,個人覺得foodpanda更像餓了么一些,為什么這么說,因為它本身就是以外送而起家的,但凡你有看YouTube你應該會發現今年它家推廣做的賊兇。不過咱們還是以美食為主,foodpanda適用的國家和地區也非常廣,基本上冷門、熱門旅游城市打開它,你都會有驚喜。

這次,我們以菲律賓的馬尼拉為例,可以看到它是先確定你的地址后在進行推送的,是不是覺得和餓了么很像?而且餐廳的圖片也比一些美圖過度的APP要來得真實,并且外送時間也有標注好,價格也不算貴,但是會要收取一定額度的服務費,類似國內的外送費。支付方式以信用卡和paypal為主,所以各位記得用之前添加好。

Wongnai

泰國一直是許多人出國的第一首選,很多人都知道,泰國美食琳瑯滿目,不僅味道好價格也便宜,但是你真的就只準備在大街小巷隨處穿梭以身試味嗎?大可不必,其實除了7-11和一些熱門餐廳外,想發現小眾地道餐廳Wongnai也能幫你。

它們家最近剛剛推出了BangkokRestaurantWeek,里邊的餐廳介紹除了有商家圖之外,各路吃貨的買家秀也同樣值得參考,并且它和大多數美食APP一樣,也有自己的USERD’CHOICE,連街頭美食也有搜羅,參考價值大,也適用所有人,并且也自帶外送服務,大多以小食和泰國當地菜為主。缺點嘛肯定有啦,它只有泰文和英文。差點忘了,它支持支付寶!

Retty

我知道很多人去日本,最愛的就是捧著食べログ找餐廳,但是說句實話,現在食べログ學壞了,會找水軍刷評分了,所以也該更新了。Retty雖說在國內不是那么的知名,但是在日本地區的知名度和公正性還是很高的,因為它的會員均采用實名制,這也極大程度避免了刷分現象。

除了常規的介紹餐廳之外,很多人不是喜歡提前做攻略嗎,它是可以提前設置你的心儀餐廳列表的哦,還有已去、想去的分類,讓你用的更加方便快捷。同時它也有自己的人氣店鋪,獲得這個稱號的都會在店面顯眼處張貼。它支持的語言種類不多,分別是日、泰、英和繁體中文,記得使用的時候更改完語言要設置定位,不然它會跳到香港的頁面。

HOTPEPPER

旅途中最擔心的就是排隊,所以提前預約這件事同樣也非常重要。而HOTPEPPER就是專門為你解決這些問題的APP,相信不少人都用過了,如果你還沒試過,非常建議你試一試。

日本大多數餐廳面積都偏小,一到飯點更是大排長龍,有了HOTPEPPER的助攻,你絕對能輕松非常多。而且它不單單是能預約餐廳而已,像美容室,派對等主題聚餐都可以進行預約,方便你在使用時從容進場,秒殺全場。不過很不幸的是,這個APP蘋果手機只能在日本地區的APPStore才能購入,安卓版沒影響。

歐美地區適用

Foodhub

不過既然是外賣APP,肯定很多人會擔心配送費、服務費的問題,放心,Foodhub比國內的外賣APP還良心,因為它完全不收取任何服務費,你只需支付餐費即可。注意,它只支持VISA和萬事達卡,并且只有英文。我剛試著搭梯子進入頁面,發現服務器一直在維修,但是網頁版沒問題,所以把網頁版地址附在后面啦~

TheFork

去歐洲國家旅行,絕大多數高檔餐廳都看得讓人一臉迷茫,加上像法語、意大利語等又沒辦法速成,搜羅一下美食攻略,網上的信息也都大同小異,莫慌,這時候就該拿出“叉子”,也就是TheFork。

它除了可以供你進行餐廳的參考外,也能夠直接通過它進行預定,只需選定地區、街道,之后再設定好時間和用餐人數即可。餐廳數量也很多,并且它還貼心的加入了貓途鷹上該餐廳的評分以及TheFork用戶對它的評分。同時它家也常有折扣,所以很適合準備去歐洲旅行的各位。忘了說,它也不支持中文。

Talabat_____

看到這名字你也猜到了,這是中東地區的美食APP。現如今不少人也愛往中東地區跑,沒個美食APP咋行。Talabat是中東地區最大的在線食品訂購平臺,雖然入駐的商家不算多,但我懂你們,有時候在國外,當地美食吃多了,像肯德基、漢堡王這種食物簡直就是十全大補丸。很開心的告訴你,它都收納了。

操作起來很方便,但是適用地區并不多,也就中東地區那幾個熱門的國家。不過驚喜的是,它的美食分類里居然有中餐,我打開看了下,Daiya地區排名靠前的幾家中餐館評分屬于中等偏上,感覺再也不用委屈自己的胃了。缺點是只有英文,配送速度會比較慢,國內網絡要用的話記得掛梯子。

Yemeksepeti

“我想要帶你去浪漫的土耳其”,現如今土耳其正值旅游旺季,但在土耳其吃什么真的很令人頭大,雖然風景美,烤肉香,但頓頓吃也很想吐阿!所以我悄悄給你們推薦個在土耳其和塞浦路斯可以用的美食APP吧。

Yemeksepeti上面足足有一萬多家餐廳供你選擇,你可以直接線上預訂,并且它不收取服務費,像很多人不是擔心用海外APP綁定自己的信用卡可能會被盜刷嗎,它可以現金結算,是不是非常貼心!剛下載好時它是土耳其文,記得改成英文。

FoursquareCityGuide

與其說它是美食APP,倒不如說是美食社交平臺。每天在這上邊,都有數以萬計的人針對自己今日用餐的餐館體驗進行點評和打分,方便各位在初次抵達某地時,可以依靠它輕松找尋到自己心儀的餐廳。不管是智利還是英國、美國,甚至是國內都能用。

使用它的時候,記得必須要打開定位,這樣才能正常使用。它的餐廳介紹詳情頁有特別附上了大眾對于它的評價,一共三個類別,分別是Likes、it’OK和Dislikes。它也有很貼心的設計心儀餐廳的列表,方便在使用時能快速找到它的信息。如果你是喜歡網紅餐廳的人,建議關注它家的推特,都會推薦并附帶地址等信息。

tips:關于注冊的問題這里說一下,國外很多APP不像國內,很多并不需要驗證手機號。建議各位出國前第一件事,注冊Google+賬戶,以上提及的90%的APP都能直接用它關聯登陸,還有FaceBook,如果你有梯子就趁早注冊。

如何用PyTorch實現遞歸神經網絡

從 Siri 到谷歌翻譯,深度神經網絡已經在機器理解自然語言方面取得了巨大突破。這些模型大多數將語言視為單調的單詞或字符序列,并使用一種稱為循環神經網絡(recurrent neural 買粉絲work/RNN)的模型來處理該序列。但是許多語言學家認為語言最好被理解為具有樹形結構的層次化詞組,一種被稱為遞歸神經網絡(recursive neural 買粉絲work)的深度學習模型考慮到了這種結構,這方面已經有大量的研究。雖然這些模型非常難以實現且效率很低,但是一個全新的深度學習框架 PyTorch 能使它們和其它復雜的自然語言處理模型變得更加容易。

雖然遞歸神經網絡很好地顯示了 PyTorch 的靈活性,但它也廣泛支持其它的各種深度學習框架,特別的是,它能夠對計算機視覺(買粉絲puter vision)計算提供強大的支撐。PyTorch 是 Facebook AI Research 和其它幾個實驗室的開發人員的成果,該框架結合了 Torch7 高效靈活的 GPU 加速后端庫與直觀的 Python 前端,它的特點是快速成形、代碼可讀和支持最廣泛的深度學習模型。

開始 SPINN

鏈接中的文章(買粉絲s://github.買粉絲/jekbradbury/examples/tree/spinn/snli)詳細介紹了一個遞歸神經網絡的 PyTorch 實現,它具有一個循環跟蹤器(recurrent tracker)和 TreeLSTM 節點,也稱為 SPINN——SPINN 是深度學習模型用于自然語言處理的一個例子,它很難通過許多流行的框架構建。這里的模型實現部分運用了批處理(batch),所以它可以利用 GPU 加速,使得運行速度明顯快于不使用批處理的版本。

SPINN 的意思是堆棧增強的解析器-解釋器神經網絡(Stack-augmented Parser-Interpreter Neural Network),由 Bowman 等人于 2016 年作為解決自然語言推理任務的一種方法引入,該論文中使用了斯坦福大學的 SNLI 數據集。

該任務是將語句對分為三類:假設語句 1 是一幅看不見的圖像的準確標題,那么語句 2(a)肯定(b)可能還是(c)絕對不是一個準確的標題?(這些類分別被稱為蘊含(entailment)、中立(neutral)和矛盾(買粉絲ntradiction))。例如,假設一句話是「兩只狗正跑過一片場地」,蘊含可能會使這個語句對變成「戶外的動物」,中立可能會使這個語句對變成「一些小狗正在跑并試圖抓住一根棍子」,矛盾能會使這個語句對變成「寵物正坐在沙發上」。

特別地,研究 SPINN 的初始目標是在確定語句的關系之前將每個句子編碼(en買粉絲ding)成固定長度的向量表示(也有其它方式,例如注意模型(attention model)中將每個句子的每個部分用一種柔焦(soft focus)的方法相互比較)。

數據集是用句法解析樹(syntactic parse tree)方法由機器生成的,句法解析樹將每個句子中的單詞分組成具有獨立意義的短語和子句,每個短語由兩個詞或子短語組成。許多語言學家認為,人類通過如上面所說的樹的分層方式來組合詞意并理解語言,所以用相同的方式嘗試構建一個神經網絡是值得的。下面的例子是數據集中的一個句子,其解析樹由嵌套括號表示:

( ( The church ) ( ( has ( cracks ( in ( the ceiling ) ) ) ) . ) )

這個句子進行編碼的一種方式是使用含有解析樹的神經網絡構建一個神經網絡層 Rece,這個神經網絡層能夠組合詞語對(用詞嵌入(word embedding)表示,如 GloVe)、 和/或短語,然后遞歸地應用此層(函數),將最后一個 Rece 產生的結果作為句子的編碼:

X = Rece(“the”, “ceiling”)

Y = Rece(“in”, X)

... etc.

但是,如果我希望網絡以更類似人類的方式工作,從左到右閱讀并保留句子的語境,同時仍然使用解析樹組合短語?或者,如果我想訓練一個網絡來構建自己的解析樹,讓解析樹根據它看到的單詞讀取句子?這是一個同樣的但方式略有不同的解析樹的寫法:

The church ) has cracks in the ceiling ) ) ) ) . ) )

或者用第 3 種方式表示,如下:

WORDS: The church has cracks in the ceiling .

PARSES: S S R S S S S S R R R R S R R

我所做的只是刪除開括號,然后用「S」標記「shift」,并用「R」替換閉括號用于「rece」。但是現在可以從左到右讀取信息作為一組指令來操作一個堆棧(stack)和一個類似堆棧的緩沖區(buffer),能得到與上述遞歸方法完全相同的結果:

1. 將單詞放入緩沖區。

2. 從緩沖區的前部彈出「The」,將其推送(push)到堆棧上層,緊接著是「church」。

3. 彈出前 2 個堆棧值,應用于 Rece,然后將結果推送回堆棧。

4. 從緩沖區彈出「has」,然后推送到堆棧,然后是「cracks」,然后是「in」,然后是「the」,然后是「ceiling」。

5. 重復四次:彈出 2 個堆棧值,應用于 Rece,然后推送結果。

6. 從緩沖區彈出「.」,然后推送到堆棧上層。

7. 重復兩次:彈出 2 個堆棧值,應用于 Rece,然后推送結果。

8. 彈出剩余的堆棧值,并將其作為句子編碼返回。

我還想保留句子的語境,以便在對句子的后半部分應用 Rece 層時考慮系統已經讀取的句子部分的信息。所以我將用一個三參數函數替換雙參數的 Rece 函數,該函數的輸入值為一個左子句、一個右子句和當前句的上下文狀態。該狀態由神經網絡的第二層(稱為循環跟蹤器(Tracker)的單元)創建。Tracker 在給定當前句子上下文狀態、緩沖區中的頂部條目 b 和堆棧中前兩個條目 s1\s2 時,在堆棧操作的每個步驟(即,讀取每個單詞或閉括號)后生成一個新狀態:

買粉絲ntext[t+1] = Tracker(買粉絲ntext[t], b, s1, s2)

容易設想用你最喜歡的編程語言來編寫代碼做這些事情。對于要處理的每個句子,它將從緩沖區加載下一個單詞,運行跟蹤器,檢查是否將單詞推送入堆棧或執行 Rece 函數,執行該操作;然后重復,直到對整個句子完成處理。通過對單個句子的應用,該過程構成了一個大而復雜的深度神經網絡,通過堆棧操作的方式一遍又一遍地應用它的兩個可訓練層。但是,如果你熟悉 TensorFlow 或 Theano 等傳統的深度學習框架,就知道它們很難實現這樣的動態過程。你值得花點時間回顧一下,探索為什么 PyTorch 能有所不同。

圖論

圖 1:一個函數的圖結構表示

深度神經網絡本質上是有大量參數的復雜函數。深度學習的目的是通過計算以損失函數(loss)度量的偏導數(梯度)來優化這些參數。如果函數表示為計算圖結構(圖 1),則向后遍歷該圖可實現這些梯度的計算,而無需冗余工作。每個現代深度學習框架都是基于此反向傳播(backpropagation)的概念,因此每個框架都需要一個表示計算圖的方式。

在許多流行的框架中,包括 TensorFlow、Theano 和 Keras 以及 Torch7 的 nngraph 庫,計算圖是一個提前構建的靜態對象。該圖是用像數學表達式的代碼定義的,但其變量實際上是尚未保存任何數值的占位符(placeholder)。圖中的占位符變量被編譯進函數,然后可以在訓練集的批處理上重復運行該函數來產生輸出和梯度值。

這種靜態計算圖(static 買粉絲putation graph)方法對于固定結構的卷積神經網絡效果很好。但是在許多其它應用中,有用的做法是令神經網絡的圖結構根據數據而有所不同。在自然語言處理中,研究人員通常希望通過每個時間步驟中輸入的單詞來展開(確定)循環神經網絡。上述 SPINN 模型中的堆棧操作很大程度上依賴于控制流程(如 for 和 if 語句)來定義特定句子的計算圖結構。在更復雜的情況下,你可能需要構建結構依賴于模型自身的子網絡輸出的模型。

這些想法中的一些(雖然不是全部)可以被生搬硬套到靜態圖系統中,但幾乎總是以降低透明度和增加代碼的困惑度為代價。該框架必須在其計算圖中添加特殊的節點,這些節點代表如循環和條件的編程原語(programming primitive),而用戶必須學習和使用這些節點,而不僅僅是編程代碼語言中的 for 和 if 語句。這是因為程序員使用的任何控制流程語句將僅運行一次,當構建圖時程序員需要硬編碼(hard 買粉絲ding)單個計算路徑。

例如,通過詞向量(從初始狀態 h0 開始)運行循環神經網絡單元(rnn_unit)需要 TensorFlow 中的特殊控制流節點 tf.while_loop。需要一個額外的特殊節點來獲取運行時的詞長度,因為在運行代碼時它只是一個占位符。

# TensorFlow

# (this 買粉絲de runs once, ring model initialization)

# “words” is not a real list (it’s a placeholder variable) so

# I can’t use “len”

買粉絲nd = lambda i, h: i < tf.shape(words)[0]

cell = lambda i, h: rnn_unit(words[i], h)

i = 0

_, h = tf.while_loop(買粉絲nd, cell, (i, h0))

基于動態計算圖(dynamic 買粉絲putation graph)的方法與之前的方法有根本性不同,它有幾十年的學術研究歷史,其中包括了哈佛的 Kayak、自動微分庫(買粉絲grad)以及以研究為中心的框架 Chainer和 DyNet。在這樣的框架(也稱為運行時定義(define-by-run))中,計算圖在運行時被建立和重建,使用相同的代碼為前向通過(forward pass)執行計算,同時也為反向傳播(backpropagation)建立所需的數據結構。這種方法能產生更直接的代碼,因為控制流程的編寫可以使用標準的 for 和 if。它還使調試更容易,因為運行時斷點(run-time breakpoint)或堆棧跟蹤(stack trace)將追蹤到實際編寫的代碼,而不是執行引擎中的編譯函數。可以在動態框架中使用簡單的 Python 的 for 循環來實現有相同變量長度的循環神經網絡。

# PyTorch (also works in Chainer)

# (this 買粉絲de runs on every forward pass of the model)

# “words” is a Python list with actual values in it

h = h0

for word in words:

h = rnn_unit(word, h)

PyTorch 是第一個 define-by-run 的深度學習框架,它與靜態圖框架(如 TensorFlow)的功能和性能相匹配,使其能很好地適合從標準卷積神經網絡(買粉絲nvolutional 買粉絲work)到最瘋狂的強化學習(reinforcement learning)等思想。所以讓我們來看看 SPINN 的實現。

代碼

在開始構建網絡之前,我需要設置一個數據加載器(data loader)。通過深度學習,模型可以通過數據樣本的批處理進行操作,通過并行化(parallelism)加快訓練,并在每一步都有一個更平滑的梯度變化。我想在這里可以做到這一點(稍后我將解釋上述堆棧操作過程如何進行批處理)。以下 Python 代碼使用內置于 PyTorch 的文本庫的系統來加載數據,它可以通過連接相似長度的數據樣本自動生成批處理。運行此代碼之后,train_iter、dev_iter 和 test_iter買粉絲ntain 循環遍歷訓練集、驗證集和測試集分塊 SNLI 的批處理。

from torchtext import data, datasets

TEXT = datasets.snli.ParsedTextField(lower=True)

TRANSITIONS = datasets.snli.ShiftReceField()

LABELS = data.Field(sequential=False)train, dev, test = datasets.SNLI.splits(

TEXT, TRANSITIONS, LABELS, wv_type='glove.42B')TEXT.build_vocab(train, dev, test)

train_iter, dev_iter, test_iter = data.BucketIterator.splits(

(train, dev, test), batch_size=64)

你可以在 train.py中找到設置訓練循環和準確性(accuracy)測量的其余代碼。讓我們繼續。如上所述,SPINN 編碼器包含參數化的 Rece 層和可選的循環跟蹤器來跟蹤句子上下文,以便在每次網絡讀取單詞或應用 Rece 時更新隱藏狀態;以下代碼代表的是,創建一個 SPINN 只是意味著創建這兩個子模塊(我們將很快看到它們的代碼),并將它們放在一個容器中以供稍后使用。

import torchfrom torch import nn

# subclass the Mole class from PyTorch’s neural 買粉絲work package

class SPINN(nn.Mole):

def __init__(self, 買粉絲nfig):

super(SPINN, self).__init__()

self.買粉絲nfig = 買粉絲nfig self.rece = Rece(買粉絲nfig.d_hidden, 買粉絲nfig.d_tracker)

if 買粉絲nfig.d_tracker is not None:

self.tracker = Tracker(買粉絲nfig.d_hidden, 買粉絲nfig.d_tracker)

當創建模型時,SPINN.__init__ 被調用了一次;它分配和初始化參數,但不執行任何神經網絡操作或構建任何類型的計算圖。在每個新的批處理數據上運行的代碼由 SPINN.forward 方法定義,它是用戶實現的方法中用于定義模型向前過程的標準 PyTorch 名稱。上面描述的是堆棧操作算法的一個有效實現,即在一般 Python 中,在一批緩沖區和堆棧上運行,每一個例子都對應一個緩沖區和堆棧。我使用轉移矩陣(transition)包含的「shift」和「rece」操作集合進行迭代,運行 Tracker(如果存在),并遍歷批處理中的每個樣本來應用「shift」操作(如果請求),或將其添加到需要「rece」操作的樣本列表中。然后在該列表中的所有樣本上運行 Rece 層,并將結果推送回到它們各自的堆棧。

def forward(self, buffers, transitions):

# The input 買粉絲es in as a single tensor of word embeddings;

# I need it to be a list of stacks, one for each example in

# the batch, that we can pop from independently. The words in

# each example have already been reversed, so that they can

# be read from left to right by popping from the end of each

# list; they have also been prefixed with a null value.

buffers = [list(torch.split(b.squeeze(1), 1, 0))

for b in torch.split(buffers, 1, 1)]

# we also need two null values at the bottom of each stack,

# so we can 買粉絲py from the nulls in the input; these nulls

# are all needed so that the tracker can run even if the

# buffer or stack is empty

stacks = [[buf[0], buf[0]] for buf in buffers]

if hasattr(self, 'tracker'):

self.tracker.reset_state()

for trans_batch in transitions:

if hasattr(self, 'tracker'):

# I described the Tracker earlier as taking 4

# arguments (買粉絲ntext_t, b, s1, s2), but here I

# provide the stack 買粉絲ntents as a single argument

# while storing the 買粉絲ntext inside the Tracker

# object itself.

tracker_states, _ = self.tracker(buffers, stacks)

else:

tracker_states = itertools.repeat(None)

lefts, rights, trackings = [], [], []

batch = zip(trans_batch, buffers, stacks, tracker_states)

for transition, buf, stack, tracking in batch:

if transition == SHIFT:

stack.append(buf.pop())

elif transition == REDUCE:

rights.append(stack.pop())

lefts.append(stack.pop())

trackings.append(tracking)

if rights:

reced = iter(self.rece(lefts, rights, trackings))

for transition, stack in zip(trans_batch, stacks):

if transition == REDUCE:

stack.append(next(reced))

return [stack.pop() for stack in stacks]

在調用 self.tracker 或 self.rece 時分別運行 Tracker 或 Rece 子模塊的向前方法,該方法需要在樣本列表上應用前向操作。在主函數的向前方法中,在不同的樣本上進行獨立的操作是有意義的,即為批處理中每個樣本提供分離的緩沖區和堆棧,因為所有受益于批處理執行的重度使用數學和需要 GPU 加速的操作都在 Tracker 和 Rece 中進行。為了更干凈地編寫這些函數,我將使用一些 helper(稍后將定義)將這些樣本列表轉化成批處理張量(tensor),反之亦然。

我希望 Rece 模塊自動批處理其參數以加速計算,然后解批處理(unbatch)它們,以便可以單獨推送和彈出。用于將每對左、右子短語表達組合成父短語(parent phrase)的實際組合函數是 TreeLSTM,它是普通循環神經網絡單元 LSTM 的變型。該組合函數要求每個子短語的狀態實際上由兩個張量組成,一個隱藏狀態 h 和一個存儲單元(memory cell)狀態 c,而函數是使用在子短語的隱藏狀態操作的兩個線性層(nn.Linear)和將線性層的結果與子短語的存儲單元狀態相結合的非線性組合函數 tree_lstm。在 SPINN 中,這種方式通過添加在 Tracker 的隱藏狀態下運行的第 3 個線性層進行擴展。

圖 2:TreeLSTM 組合函數增加了第 3 個輸入(x,在這種情況下為 Tracker 狀態)。在下面所示的 PyTorch 實現中,5 組的三種線性變換(由藍色、黑色和紅色箭頭的三元組表示)組合為三個 nn.Linear 模塊,而 tree_lstm 函數執行位于框內的所有計算。圖來自 Chen et al. (2016)。

很赞哦!(4)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:甘肃庆阳镇原县

工作室:小组

Email:[email protected]