【Bert101】最先進的 NLP 模型解釋【01/4】

?


0 什么是伯特?

????????BERT是來自【Bidirectional Encoder Representations from Transformers】變壓器的雙向編碼器表示的縮寫,是用于自然語言處理的機器學習(ML)模型。它由Google AI Language的研究人員于2018年開發,可作為瑞士軍刀解決方案,用于11 +最常見的語言任務,例如情感分析和命名實體識別。

????????從歷史上看,語言對計算機來說很難“理解”。當然,計算機可以收集、存儲和讀取文本輸入,但它們缺乏基本的語言上下文

????????因此,自然語言處理(NLP)隨之而來:人工智能領域,旨在讓計算機閱讀,分析,解釋并從文本和口語中獲取含義。這種做法結合了語言學、統計學和機器學習,以幫助計算機“理解”人類語言。

????????傳統上,單個NLP任務由為每個特定任務創建的單個模型來解決。也就是說,直到——伯特!

????????BERT通過解決11 +最常見的NLP任務(并且比以前的模型更好)徹底改變了NLP空間,使其成為所有NLP交易的杰克。在本指南中,您將了解BERT是什么,為什么它不同,以及如何開始使用BERT:

  1. 伯特的用途是什么?
  2. 伯特是如何工作的?
  3. BERT模型大小和架構
  4. BERT在公共語言任務上的表現
  5. 深度學習對環境的影響
  6. BERT的開源力量
  7. 如何開始使用伯特
  8. 伯特常見問題
  9. 結論

讓我們開始吧!🚀

1. 伯特的用途是什么?

BERT可用于各種語言任務:

  • 可以確定電影評論的正面或負面程度。(情緒分析)
  • Helps chatbots answer your questions.?(Question answering)
  • Predicts your text when writing an email (Gmail).?(Text prediction)
  • 只需幾句話就可以寫一篇關于任何主題的文章。(文本生成)
  • 可以快速總結長期法律合同。(摘要)
  • 可以根據周圍的文本區分具有多種含義的單詞(如“銀行”)。(多義性分辨率)

還有更多的語言/NLP任務+每個任務背后的更多細節。

有趣的事實:您幾乎每天都與NLP(可能還有BERT)互動!

NLP是谷歌翻譯,語音助手(Alexa,Siri等),聊天機器人,谷歌搜索,語音操作GPS等的背后。


1.1 BERT的例子

自 2020 年 <> 月以來,BERT 幫助 Google 更好地顯示幾乎所有搜索的(英語)結果。

以下是BERT如何幫助Google更好地了解特定搜索的示例,例如:

伯特谷歌搜索示例

在BERT之前,谷歌浮出水面,提供有關填寫處方的信息。

后伯特谷歌明白“為某人”與為其他人開處方有關,搜索結果現在有助于回答這個問題。


2. 伯特如何工作?

BERT通過利用以下內容來工作:

2.1 大量的訓練數據

3億字的龐大數據集為BERT的持續成功做出了貢獻。

BERT在維基百科(~2.5B字)和谷歌的BooksCorpus(~800M字)上進行了專門訓練。這些大型信息數據集不僅有助于BERT對英語的深入了解,而且有助于深入了解我們的世界!🚀

在這么大的數據集上進行訓練需要很長時間。由于新穎的變壓器架構,BERT的培訓成為可能,并通過使用TPU(張量處理單元 - Google專門為大型ML模型構建的定制電路)來加速。—64 名 TPU 在 4 天內訓練了 BERT。

注意:為了在較小的計算環境(如手機和個人計算機)中使用BERT,對較小的BERT模型的需求正在增加。23 年 2020 月發布了 60 款較小的 BERT 車型。DistilBERT提供了BERT的較輕版本;運行速度提高 95%,同時保持 BERT 性能的 <>% 以上。

2.2 什么是屏蔽語言模型?

MLM通過屏蔽(隱藏)句子中的單詞并迫使BERT雙向使用覆蓋單詞兩側的單詞來預測被屏蔽的單詞,從而實現/強制從文本中進行雙向學習。這是以前從未做過的!

有趣的事實:作為人類,我們自然會這樣做!

屏蔽語言模型示例:

想象一下,你的朋友在冰川國家公園露營時打電話給你,他們的服務開始中斷。在呼叫斷開之前,您聽到的最后一件事是:

朋友:“叮!我出去釣魚了,一條巨大的鱒魚只是[空白]我的線!

你能猜出你朋友說了什么嗎?

您自然能夠通過將缺失單詞前后的單詞雙向視為上下文線索來預測缺失的單詞(除了您對釣魚工作原理的歷史知識)。你猜到你的朋友說,“破產”了嗎?這也是我們預測的,但即使是我們人類也容易出錯。

注意:這就是為什么您經常會看到“人類績效”與語言模型的性能分數進行比較的原因。是的,像BERT這樣的新模型可以比人類更準確!🤯

您為填寫上面的[空白]單詞所做的雙向方法類似于BERT獲得最先進準確性的方式。在訓練過程中隨機隱藏了15%的標記化單詞,BERT的工作是正確預測隱藏的單詞。因此,直接向模型教授有關英語(以及我們使用的單詞)的知識。這不是很整潔嗎?

玩弄BERT的掩蔽預測:

托管推理 API
填充面膜
例子
掩碼令牌:[MASK]
人生的目標是[面具]。計算
此模型可以按需加載到推理 API 上。
數據別名記錄輸出最大化

有趣的事實:掩蔽已經存在了很長時間 -?1953年關于完形填空程序(或“掩蔽”)的論文。

2.3 什么是下一句預測?

NSP(下一句預測)用于通過預測給定句子是否遵循前一個句子來幫助BERT了解句子之間的關系。

下一句預測示例:

  1. 保羅去購物了。他買了一件新襯衫。(正確的句子對)
  2. 雷蒙娜煮咖啡。香草冰淇淋蛋筒出售。(不正確的句子對)

在訓練中,50%的正確句子對與50%的隨機句子對混合在一起,以幫助BERT提高下一個句子預測的準確性。

有趣的事實:BERT同時接受傳銷(50%)和NSP(50%)的培訓。

2.4 變壓器

轉換器架構可以非常高效地并行化 ML 訓練。因此,大規模并行化使得在相對較短的時間內在大量數據上訓練BERT變得可行。

變形金剛使用注意力機制來觀察單詞之間的關系。最初在2017年流行的Attention Is All You Need論文中提出的一個概念引發了世界各地NLP模型中變形金剛的使用。

自 2017 年推出以來,變形金剛已迅速成為處理自然語言處理、語音識別和計算機視覺等許多領域任務的最先進方法。簡而言之,如果你正在做深度學習,那么你需要變形金剛!

Lewis Tunstall,Hugging Face ML工程師,《變形金剛自然語言處理》作者

流行的變壓器模型發布時間表:

變壓器模型時間表

2.4.1 變壓器如何工作?

變形金剛通過利用注意力來工作,注意力是一種強大的深度學習算法,首次出現在計算機視覺模型中。

—與我們人類通過注意力處理信息的方式并沒有太大區別。我們非常善于忘記/忽略平凡的日常輸入,這些輸入不會構成威脅或需要我們做出回應。例如,你還記得上周二回家時看到和聽到的一切嗎?當然不是!我們大腦的記憶是有限而有價值的。我們的回憶得益于我們忘記瑣碎輸入的能力。

同樣,機器學習模型需要學習如何只關注重要的事情,而不是浪費計算資源來處理不相關的信息。變壓器產生差分權重,指示句子中的哪些單詞對進一步處理最關鍵。

編碼器和解碼器

變壓器通過變壓器層堆棧(通常稱為編碼器)連續處理輸入來實現這一點。如有必要,可以使用另一個變壓器層堆棧 - 解碼器 - 來預測目標輸出。—但是,BERT不使用解碼器。變壓器特別適合無監督學習,因為它們可以有效地處理數百萬個數據點。

有趣的事實:自 2011 年以來,Google 一直在使用您的 reCAPTCHA 選擇來標記訓練數據。整個 Google 圖書檔案和《紐約時報》目錄中的 13 萬篇文章已通過輸入 reCAPTCHA 文本的人進行轉錄/數字化。現在,reCAPTCHA要求我們標記Google街景圖像,車輛,紅綠燈,飛機等。如果谷歌讓我們意識到我們參與了這項工作(因為訓練數據可能具有未來的商業意圖),那就太好了,但我跑題了。

要了解有關變形金剛的更多信息,請查看我們的擁抱面變壓器課程。

3. BERT模型大小和架構

讓我們分解一下兩個原始BERT模型的架構:

原始的BERT模型架構

ML 架構術語表:

機器學習架構部件定義
參數:可用于模型的可學習變量/值的數量。
變壓器層:變壓器塊的數量。轉換器塊將一系列單詞表示轉換為一系列上下文化單詞(編號表示)。
隱藏大小:位于輸入和輸出之間的數學函數層,用于分配權重(單詞)以產生所需的結果。
注意頭:變壓器塊的大小。
加工:用于訓練模型的處理單元的類型。
培訓時間:訓練模型所花費的時間。

以下是BERTbase和BERTlarge擁有的上述ML架構部分的數量:

變壓器層隱藏尺寸注意頭參數加工培訓時長
伯特基地1276812110米4 個熱塑性聚氨酯4天
伯特大24102416340米16 個熱塑性聚氨酯4天

讓我們來看看BERTlarge的附加層,注意頭和參數如何提高其在NLP任務中的性能。

4. BERT在公共語言任務上的表現

BERT 在 11 個常見的 NLP 任務上成功實現了最先進的準確性,優于以前的頂級 NLP 模型,并且是第一個超越人類的模型! 但是,如何衡量這些成就?

自然語言處理評估方法:

4.1 SQuAD v1.1 & v2.0

SQuAD(斯坦福問答數據集)是一個包含大約 108k 個問題的閱讀理解數據集,可以通過維基百科文本的相應段落回答。BERT在這種評估方法上的表現是超越以前最先進的模型和人類水平表現的巨大成就:

BERT在SQuAD v1.1上的表現

4.2 SWAG 評估法?

SWAG(Situations With Adversarial Generations)是一個有趣的評估,因為它檢測模型推斷常識的能力!它通過一個關于常識情況的 113k 多項選擇題的大規模數據集來做到這一點。這些問題是從視頻場景/情況中轉錄而來的,SWAG 在下一個場景中為模型提供了四種可能的結果。然后,該模型在預測正確答案方面做到最好。

BERT的表現優于以前的頂級模型,包括人類水平的表現:

變壓器模型時間表

4.3 格魯基準

GLUE(通用語言理解評估)基準是一組資源,用于訓練、測量和分析彼此比較的語言模型。這些資源由九個“困難”的任務組成,旨在測試NLP模型的理解。以下是其中每個任務的摘要:

變壓器模型時間表

變壓器模型時間表

雖然其中一些任務可能看起來無關緊要和平庸,但重要的是要注意,這些評估方法在指示哪些模型最適合您的下一個 NLP 應用程序方面非常強大。

獲得這種機芯的性能并非沒有后果。接下來,讓我們了解機器學習對環境的影響。

5. 深度學習對環境的影響

大型機器學習模型需要大量數據,這在時間和計算資源方面都很昂貴。

這些模型還對環境有影響:

變壓器模型時間表

機器學習對環境的影響是我們相信通過開源使機器學習世界民主化的眾多原因之一!共享大型預訓練語言模型對于降低社區驅動工作的總體計算成本和碳足跡至關重要。

6. BERT的開源力量

與GPT-3等其他大型學習模型不同,BERT的源代碼是可公開訪問的(在Github上查看BERT的代碼),從而使BERT在世界各地得到更廣泛的使用。這是一個改變游戲規則的人!

開發人員現在能夠快速啟動并運行像BERT這樣的最先進的模型,而無需花費大量時間和金錢。🤯

相反,開發人員可以將精力集中在微調BERT上,以根據其獨特的任務自定義模型的性能。

重要的是要注意,如果您不想微調BERT,目前有數千個開源和免費的預訓練BERT模型可用于特定用例。

針對特定任務預先訓練的BERT模型:

  • 推特情緒分析
  • 日文文本分析
  • 情緒分類器(英語 - 憤怒、恐懼、喜悅等)
  • 臨床筆記分析
  • 語音到文本翻譯
  • 有害評論檢測

您還可以在擁抱面部集線器上找到數百個預先訓練的開源變壓器模型。

7. 如何開始使用伯特

我們創建了這個筆記本,所以你可以通過谷歌Colab中的這個簡單的教程來嘗試BERT。打開筆記本或將以下代碼添加到你自己的筆記本中。專業提示:使用 (Shift + 單擊) 運行代碼單元格。

注意:Hugging Face 的管道類使得只需一行代碼即可非常輕松地引入像轉換器這樣的開源 ML 模型。

7.1 安裝變壓器

首先,讓我們通過以下代碼安裝轉換器:

!pip install transformers

7.2 試用Bert

????????隨意將下面的句子換成您自己的句子。但是,將[MASK]留在某個地方,以便BERT預測丟失的單詞

from transformers import pipeline
unmasker = pipeline('fill-mask', model='bert-base-uncased')
unmasker("Artificial Intelligence [MASK] take over the world.")

????????當您運行上面的代碼時,您應該看到如下所示的輸出:

[{'score': 0.3182411789894104,'sequence': 'artificial intelligence can take over the world.','token': 2064,'token_str': 'can'},{'score': 0.18299679458141327,'sequence': 'artificial intelligence will take over the world.','token': 2097,'token_str': 'will'},{'score': 0.05600147321820259,'sequence': 'artificial intelligence to take over the world.','token': 2000,'token_str': 'to'},{'score': 0.04519503191113472,'sequence': 'artificial intelligences take over the world.','token': 2015,'token_str': '##s'},{'score': 0.045153118669986725,'sequence': 'artificial intelligence would take over the world.','token': 2052,'token_str': 'would'}]

有點嚇人吧?🙃

7.3 注意模型偏差

讓我們看看BERT為“男人”建議的工作:

unmasker("The man worked as a [MASK].")

運行上述代碼時,您應該看到如下所示的輸出:

[{'score': 0.09747546911239624,'sequence': 'the man worked as a carpenter.','token': 10533,'token_str': 'carpenter'},{'score': 0.052383411675691605,'sequence': 'the man worked as a waiter.','token': 15610,'token_str': 'waiter'},{'score': 0.04962698742747307,'sequence': 'the man worked as a barber.','token': 13362,'token_str': 'barber'},{'score': 0.037886083126068115,'sequence': 'the man worked as a mechanic.','token': 15893,'token_str': 'mechanic'},{'score': 0.037680838257074356,'sequence': 'the man worked as a salesman.','token': 18968,'token_str': 'salesman'}]

BERT預測該男子的工作是木匠,服務員,理發師,機械師或推銷員

現在讓我們看看伯特為“女人”提供哪些工作

unmasker("The woman worked as a [MASK].")

您應該會看到如下所示的輸出:

[{'score': 0.21981535851955414,'sequence': 'the woman worked as a nurse.','token': 6821,'token_str': 'nurse'},{'score': 0.1597413569688797,'sequence': 'the woman worked as a waitress.','token': 13877,'token_str': 'waitress'},{'score': 0.11547300964593887,'sequence': 'the woman worked as a maid.','token': 10850,'token_str': 'maid'},{'score': 0.03796879202127457,'sequence': 'the woman worked as a prostitute.','token': 19215,'token_str': 'prostitute'},{'score': 0.030423851683735847,'sequence': 'the woman worked as a cook.','token': 5660,'token_str': 'cook'}]

BERT預測,該女性的工作是護士,女服務員,女傭,或廚師,在專業角色中表現出明顯的性別偏見。

7.4 您可能喜歡的其他一些BERT筆記本:

BERT首次的可視化筆記本

訓練您的分詞器

+不要忘記查看擁抱面變壓器課程以了解更多信息 🎉

8. Bert常見問題

BERT可以與PyTorch一起使用嗎?

是的!我們在Hugging Face的專家已經在GitHub上開源了PyTorch轉換器存儲庫。

專業提示:Lewis Tunstall,Leandro von Werra和Thomas Wolf還寫了一本書,幫助人們使用Hugging Face構建語言應用程序,名為“使用變形金剛進行自然語言處理”。

BERT可以與Tensorflow一起使用嗎?

是的!您可以使用 Tensorflow 作為 Transformers 的后端。

預訓練BERT需要多長時間?

2個原始BERT模型在4(BERTbase)和16(BERTlarge)云TPU上進行了4天的訓練。

微調BERT需要多長時間?

對于上面討論的常見 NLP 任務,BERT 在單個云 TPU 上需要 1-25 分鐘,在單個 GPU 上需要 1-130 分鐘。

是什么讓伯特與眾不同?

BERT是NLP中最早以兩步法訓練的模型之一:
  1. BERT以無監督的方式對大量未標記的數據(無人工注釋)進行了訓練。
  2. 然后,從之前的預訓練模型開始,對少量人工注釋的數據對BERT進行訓練,從而獲得最先進的性能。

9. 結論

????????BERT是一種高度復雜和先進的語言模型,可以幫助人們自動理解語言。它實現最先進性能的能力得到了大量數據培訓和利用變壓器架構徹底改變NLP領域的支持。

????????由于BERT的開源庫,以及令人難以置信的AI社區為繼續改進和共享新的BERT模型所做的努力,未觸及的NLP里程碑的未來看起來很光明。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41524.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Harbor】使用手冊

一、Harbor使用方式 Harbor 作為鏡像倉庫&#xff0c;主要的交互方式就是 將鏡像上傳到Harbor上&#xff0c;以及從Harbor上下載指定鏡像 在傳輸鏡像前&#xff0c;可以先使用 Harbor 提供的權限管理&#xff0c;將項目設置為私有項目&#xff0c;并對不同用戶設置不同角色&…

基于Spring Boot的高校在線考試系統的設計與實現(Java+spring boot+VUE+MySQL)

獲取源碼或者論文請私信博主 演示視頻&#xff1a; 基于Spring Boot的高校在線考試系統的設計與實現&#xff08;Javaspring bootVUEMySQL&#xff09; 使用技術&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java s…

uniapp小程序實現上傳圖片功能,并顯示上傳進度

效果圖&#xff1a; 實現方法&#xff1a; 一、通過uni.chooseMedia(OBJECT)方法&#xff0c;拍攝或從手機相冊中選擇圖片或視頻。 官方文檔鏈接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia uni.chooseMedia({count: 9,mediaType: [image,video],so…

vscode用ssh遠程連接linux

1、vscode是利用ssh遠程連接linux的&#xff0c;所以首先確保vscode已經安裝了這兩個插件 2、點擊左下角的連接 3、選擇Connect to Host…… 5、按格式輸入 ssh 主機名ip 比如我的&#xff1a;ssh mnt192.168.198.128 6、選擇第一個打開配置文件&#xff0c;確保輸入正確 7、…

spring bean創建總覽 1

1 開始 這是一個總圖 下邊慢慢看 我們最基礎的寫的方式就是xml的方式去寫 像這樣&#xff0c; 而我們會通過applicationContext的方式去獲得我們的bean &#xff0c;我其中一篇博客就寫到了applicationContext他的父類就是beanFactory 但是中間的是怎么樣處理的呢&#xff1f…

VET:基因變異VCF數據集便捷提取工具

VET&#xff1a;Vcf Export Tools 工具簡介 VET是一個基于R語言開發的變異位點信息批量提取工具&#xff0c;主要功能是根據VCF數據集&#xff0c;按照基因ID、樣品ID、變異位點ID等參數&#xff0c;實現批量提取&#xff0c;同時支持變異位點結構注釋&#xff0c;一步搞定變異…

android 的Thread類

Thread類 位于java.lang包下的Thread類是非常重要的線程類&#xff0c;它實現了Runnable接口&#xff0c;學習Thread類包括這些相關知識&#xff1a;線程的幾種狀態、上下文切換&#xff0c;Thread類中的方法的具體使用。 線程&#xff1a;比進程更小的執行單元&#xff0c;每…

Php“牽手”京東商品詳情頁數據采集方法,京東API接口申請指南

京東詳情接口 API 是開放平臺提供的一種 API 接口&#xff0c;它可以幫助開發者獲取商品的詳細信息&#xff0c;包括商品的標題、描述、圖片等信息。在電商平臺的開發中&#xff0c;詳情接口API是非常常用的 API&#xff0c;因此本文將詳細介紹詳情接口 API 的使用。 一、京東…

uniapp編寫微信小程序遇到的坑總結

1、阻止事件冒泡 使用uniapp開發微信小程序的時候&#xff0c;發現使用click.stop來阻止事件冒泡沒有作用&#xff0c;點擊了之后發現仍然會觸發父組件或者祖先組件的事件。 在網上查閱&#xff0c;發現使用tap.stop才能阻止事件冒泡。 2、二維碼生成 在網上找了很多&…

Linux 信號的基本概念

信號的基本概念 1. 信號的概念 信號是Linux系統響應某些條件產生的一些事件。接收到信號的進程會相應地采取一些行動。 2. 信號的生成 信號是由于某些錯誤條件而生成的&#xff0c;如內存段沖突、浮點處理器錯誤或非法指令等。信號的生成其實就是一種軟件層次的中斷&#x…

adb對安卓app進行抓包(ip連接設備)

adb對安卓app進行抓包&#xff08;ip連接設備&#xff09; 一&#xff0c;首先將安卓設備的開發者模式打開&#xff0c;提示允許adb調試 二&#xff0c;自己的筆記本要和安卓設備在同一個網段下&#xff08;同連一個WiFi就可以了&#xff09; 三&#xff0c;在筆記本上根據i…

JVM——類的生命周期

文章目錄 類加載過程加載驗證準備解析初始化 卸載 一個類的完整生命周期如下&#xff1a; 類加載過程 Class 文件需要加載到虛擬機中之后才能運行和使用&#xff0c;那么虛擬機是如何加載這些 Class 文件呢&#xff1f; 系統加載 Class 類型的文件主要三步:加載->連接->…

Redis-秒殺

唉 就記得當時搶冰墩墩的時候的秒殺了 我們要注意什么問題呢? 1.幾百萬人在這個瞬間搶冰墩墩 這個瞬間會有大量的請求 服務器要能抗的住 2.不能超賣,就那些冰墩墩 賣多了壓根沒有 好不容易搶到你說沒貨了怕不是要被沖爛 3.避免少賣 攏共就那些 你再少賣點 沒屁了 4.防黃牛…

CentOS系統環境搭建(十五)——CentOS安裝Kibana

centos系統環境搭建專欄&#x1f517;點擊跳轉 關于Elasticsearch的安裝請看CentOS系統環境搭建&#xff08;十二&#xff09;——CentOS7安裝Elasticsearch。 CentOS安裝Kibana 文章目錄 CentOS安裝Kibana1.下載2.上傳3.解壓4.修改kibana配置文件5.授予es用戶權限6.kibana 后臺…

uniapp的UI框架組件庫——uView

在寫uniapp項目時候&#xff0c;官方所推薦的樣式庫并不能滿足日常的需求&#xff0c;也不可能自己去寫相應的樣式&#xff0c;費時又費力&#xff0c;所以我們一般會去使用第三方的組件庫UI&#xff0c;就像vue里我們所熟悉的elementUI組件庫一樣的道理&#xff0c;在uniapp中…

? Spring Clould 配置中心 - Nacos

視頻地址&#xff1a;微服務&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; Nacos配置管理-Nacos實現配置管理&#xff08;P24、P25&#xff09; Nacos除了可以做注冊中心&#xff0c;同樣可以做配置管理來使用。 當微服務部署的實例越來越多&#xff0c…

18萬字應急管理局智慧礦山煤礦數字化礦山技術解決方案WORD

導讀&#xff1a;原文《18萬字應急管理局智慧礦山煤礦數字化礦山技術解決方案WORD》&#xff08;獲取來源見文尾&#xff09;&#xff0c;本文精選其中精華及架構部分&#xff0c;邏輯清晰、內容完整&#xff0c;為快速形成售前方案提供參考。 目 錄 第一章 項目概述 1.1項目…

《Go 語言第一課》課程學習筆記(七)

代碼塊與作用域&#xff1a;如何保證變量不會被遮蔽&#xff1f; 什么是變量遮蔽呢&#xff1f;package mainimport ("fmt""github.com/google/uuid""github.com/sirupsen/logrus" )func main() {fmt.Println("hello, world")logrus.…

私域新零售商業模式成功的八大要素

從事互聯網行業多年以來&#xff0c;遇到客戶問最多的一個問題&#xff0c;就是什么樣的模式火呀&#xff1f;在設計一個商業模式時&#xff0c;不單單只是考慮資金和人脈等等資源的&#xff0c;其實還是需要遵循這八大原則&#xff0c;它包括&#xff1a;客戶價值最大化原則、…

PyTorch學習筆記(十三)——現有網絡模型的使用及修改

以分類模型的VGG為例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) print(vgg16_true) vgg16_true.classifier.add_module("add_linear",nn.Linear(1000,10)) print(vgg16_true) vgg16_false.classifie…