一文教你 「量子編程」入門式

2020-12-04 中科院物理所

科學無國界

我們是知識的搬運工

福利時間

今天我們將送出由北京聯合出版公司提供的優質科普書籍宇宙地圖》。

我們生活的地球是太陽系的一部分,太陽系屬於更大的銀河系,而銀河系本身則位於拉尼亞凱系團內。我們該如何精準確定自己在宇宙中的位置?2014 年誕生的第一幅三維宇宙全景圖,標誌著我們有了新的宇宙地址!這正是 20 年來,本書作者、法國天體物理學家海倫·庫爾圖瓦及其國際研究 團隊一起探索宇宙,致力於繪製近域宇宙圖的成果。

本書為普通非專業讀者而寫,庫爾圖瓦用人人能懂的語言帶領我們重溫繪製宇宙地圖的過程。本書糅雜了宇宙科學知識與許多生動有趣的故事,可謂一部極簡宇宙史。讀者不僅踏上了一場奇妙的星際旅行,還得以窺見庫爾圖瓦作為天文學家的學術人生。

只要你認真閱讀下面的這篇文章,思考文末提出的問題,嚴格按照 互動:你的答案 格式在評論區留言,就有機會獲得獎品!

作者:Quentin Truong翻譯:Nuor審校:YQH

這是一段從量子比特到真實量子程序量子編程演練

量子計算機

量子計算機被發現之後,量子編程也在不斷發展。本文將帶你入門量子編程,介紹量子計算機與傳統電腦的區別,解釋量子編程的基本概念,最後教你如何在一個當今免費的量子計算機上運行程序。

在開始之前,請注意,本文是為希望了解量子編程的完整技術細節的人們準備的。本文建立在量子比特(qubit),量子門(quantum gates)和量子電路圖(quantum circuit diagrams)的數學基礎之上。(本文不涉及解釋量子算法。)

由於我們將涉及到有關量子編程的基礎數學,因此你需要了解向量、矩陣、線性組合和複數的概念。

量子計算機

讓我們首先了解一下什麼是量子計算機,其與傳統的計算機有什麼區別?

量子計算機是使用量子力學進行運算的機器。

那麼,這與其他計算機有何不同?我們知道,計算機最基本的形式是用來執行運算,有許多類型的計算機,在計算機時代的早期,我們實際上是有過機械計算機的——查爾斯·巴貝奇在1837年設計了一款機械計算機來執行基本的計算過程。現今,我們的計算機基於數字電子設備,利用邏輯門來進行運算。與之不同的是,量子計算機使用量子力學來進行運算,利用量子比特量子門,而不是邏輯門

那麼,什麼是量子比特和量子門呢?物理上來說,它們可以用許多方式實現——Google、IBM、微軟、Rigetti等公司都有自己的方案。我們現階段無需關心量子比特和量子門的物理性質,因為初次學習量子程序並不需要了解這些。

量子編程

在開始編程之前,強烈建議你摒棄大腦中有關編程的一切固有概念,不要想著聲明設置變量,循環語句,定義函數等,任何先入之見都沒有用。量子編程不是簡單地將現在的程序運行更快的一種方法,其與現有的程序在根本上就是完全不同的。(按語:「量子編程」用是類似HDL的硬體描述語言,而不是如C之類的面向過程式語言。兩者無法類比。)

了解量子比特

一個量子比特是具有單位長度的兩份複數的矢量。為什麼使用量子比特?量子比特的含義是什麼?我們不妨把它和傳統的位(即比特)作比較。

對於初學者來言,「一個位」是一個非0即1的數。而「一個量子比特」是一個非0即1的概率分布:若有兩個相同的量子比特,分別測量,可以測到不同的值。仔細想一想,就可以發現,基於量子比特的量子計算,本質上也是概率性的!

第二個重要的區別是,一個傳統的位可以被無限次讀取,而量子比特一旦被讀取過,就會失去量子性,坍縮成一個傳統的位。想想薛丁格的貓,「測量」就是打開盒子,看看貓有沒有死。一旦發現它死了,即使合上蓋子再打開,貓也不會再活過來。用量子力學的話說,「波函數發生了坍縮」。

我們假設一個量子比特可以測到0的概率為|α|2,測到1的概率為|β|2。由於測到的值非0即1,所以:

其中,包含α和β的列向量是一個量子比特,α和β上方的橫線表示復共軛。之所以把概率寫成α和β模長的平方,是因為α和β本質上是兩個波函數的幅值,而任何測量手段都是在取各自的模平方。

總結:量子比特是兩個複數的α和β的單位向量。量子比特被測量概率為0的是|α|2,被測量為1。α和β在被測量之前,是不得而知的,測過之後則坍縮。

量子比特符號

我們通常使用狄拉克標記(也稱作bra-ket標記)表示量子比特。bra代表行向量,用 |表示,ket代表列向量,用| 表示。例如,我們可以按照以下的方式在狄拉克表示中寫入測到的「0」狀態和「1」狀態。(注意不要將bra/ket的表示和向量內的內容混淆。)

量子比特有純態混合態的區別。如果一個量子比特的態可以完全用|0和|1線性表示,這就是一個純態

還有一些純態的簡單表示例子:

其他量子比特需要純態的混合才能充分描述它們,被稱為混合態量子比特。換句話說,混合態量子比特是通過純態的概率分布來描述的。在本文稍後的部分,我們將看到一個混合態量子比特的示例。

多個量子比特

到目前為止,我們僅定義了單個量子比特的狀態。多個量子比特的組合狀態是什麼樣的?

多個量子比特的組合狀態其實就是所有量子比特的張量積。

如果你不知道張量積是什麼,請不要擔心。我們將通過一個簡單的示例來進行介紹(是張量積運算的符號)。

通常,我們可以通過以下兩個步驟對任何兩個矩陣進行張量積:

1. 將第一個矩陣中的每個元素乘以第二個矩陣;

2. 根據第一個矩陣中元素的原始位置,合併乘出來的矩陣。

這是一個如何處理二維矩陣的示例:

我們還可以將狄拉克表示中的多個量子比特表示為|0|1。作為簡寫,我們可以省略,僅寫|0|1;更簡略些,寫成|01。

了解量子門

現在讓我們了解一下量子門

量子門是一個么正矩陣。

為什麼是么正矩陣?

首先,量子門將由物理設備實現,因此它們必須遵守量子物理定律。物理學的定律表明:信息在過去和未來的點轉換時,不會丟失,這被稱為么正性(unitarity)。由於我們的量子門定義了狀態的轉變,因此它們也必須遵守么正性。

其次,請注意,量子門是作用在量子比特上的。之前提到,量子比特實際上只是矢量,因此這意味著量子門必須以某種方式對矢量起作用。幸運的是,我們記得矩陣實際上是向量的線性變換

結合這兩種思想,我們將量子門視為么正矩陣。么正矩陣是複數的任何方陣,它的共軛轉置等於它的逆。作為快速變換,可以通過取矩陣中每個元素的共軛(a + bi → a - bi),然後取矩陣的轉置(元素ij→元素ji),可以找到矩陣的共軛轉置。我們通常用「」表示共軛轉置。

關於么正矩陣的一個重要性質是範數(即向量的長度)不變性。否則,一個量子比特被量子門處理過後,其概率和不為1!這沒有任何意義,因為所有概率的總和必須始終等於1。

還應注意,根據定義,么正矩陣有逆。這意味著我們不能將量子比特「分配」到任意狀態。為了理解,我們假設有一個可以「分配」值的量子門,因此,可以將含有兩個複數的任何矢量轉換為含有兩個複數的特定矢量。作為么正矩陣,這個量子門具有的一些特定的表示,且該矩陣具有能夠將特定矢量轉換回操作前狀態的逆矩陣!但是,在測量之前,量子比特可能處於任何狀態,並且無法知道是哪個!因此,我們不能將量子比特「分配」到任意狀態。在更高的層次上,所有量子門都是可逆的,這就是為什麼我們經常量子計算視為可逆計算的一種形式

最後,請注意,因為我們的量子門是么正矩陣,從定義上來說它們是方陣,所以我們的量子門必須具有相等數量的輸入和輸出量子比特(因為正方形矩陣將n個標準基向量映射到n列)!這與大多數邏輯門完全不同。例如,「與」門取兩個輸入並產生一個輸出。

H和CNOT量子門

現在我們已經對我們將要做的事情有了一點了解了,現在以Hadamard門為例,矩陣H:

我們可以通過計算矩陣的共軛轉置(H)是否等於矩陣的逆(H-1)來確定H的么正性:

另一個重要的量子門是「控制非門」,也稱為CNOT。CNOT作用於兩個量子比特,一個控制量子比特和一個目標量子比特。我們可以將CNOT視為 「if語句」——如果控制量子比特等於1,則CNOT將NOT(非門)應用於目標量子比特。因此CNOT又叫控制非門

這是代表CNOT的矩陣。此矩陣將控制量子比特視為右矢內的最右值,將目標量子比特視為最左值

將其作用到|00上,得:

在此示例中,我們看到CNOT不會修改「00」的值,這是被預期的行為,因為CNOT僅在控制態為1時才反轉目標態。

讓我們來看看它對|01的影響。

在這裡,我們可以看到控制態等於1,因此CNOT發生概率反轉。因此,結果是|11。

嘗試找出另外兩種情況,|10和|11,你可以發現CNOT具有以下行為:

請注意,這恰恰是傳統計算機中控制位為1時對目標位應用「」的行為。

總結:量子門是一個么正矩陣,么正性需得保證其概率之和為1,且量子計算機可逆。由於么正矩陣是方陣,因此輸入和輸出的數目是一樣的。我們了解到Hadamard和CNOT兩個重要的量子門。(還存在著更多的其他量子門。)

量子電路圖

在已經了解量子比特和量子門的基礎上,進一步學習第一個量子電路圖

量子電路圖是我們對於量子程序的思考構建。將量子比特定義為行,從左到右應用量子門,構建量子電路圖。遍歷圖的每一個部分。首先,我們有兩個量子比特,每一行匹配一個量子比特,最上面的一行對應著x0的量子比特,下面對應著下x1的量子比特。將x0視為第0個量子比特,從0開始計數,標號x0:|0和x1:|0代表從狀態|0開始。

H是Hadamard門,應用於量子比特x0。●-⊕是CNOT門,●是控制量子比特,⊕是目標量子比特。「-」是為了幫助我們表示受影響的兩個量子比特。換句話說,我們正在應用CNOT量子門,其中控制態為量子比特x0,目標態為x1。注意,我們這些門的應用順序很重要。在此圖中,我們首先應用H,然後應用CNOT。

翻譯量子電路圖

量子電路圖只是量子編程的一種表達方式。它幫助我們了解量子計算機,但是其他的表示方法也是很有用的。我們能將我們的圖形式變為字符串符號的形式,能夠更好地幫助我們寫作代碼。以字符串表示能使之更輕鬆地轉換為基礎的數學,這個數學公式將告訴我們程序的預期輸出。

首先,將圖轉換為字符串符號。我們使用狄拉克表示法,像寫二進位數一樣,第0個量子比特將是|00中最右邊的量子比特。這意味著量子比特x1是|00中最左邊的量子比特。(請注意,順序的定義可以不同,但前後要保證統一。)

我們還需要轉換「門」。

由於我們將H作用於量子比特x0而不作用任何東西到量子比特x1(等同於應用單位門,I),因此我們將其寫為(IH)。最後,我們翻譯CNOT門,指定哪個量子比特是控制態,哪個是目標態。結果為CNOT [control = 0,target = 1](IH)|00(注意,從右到左讀取此字符串)。當編寫將在量子計算機上運行的代碼時,這些都將非常有用。

寫出基礎數學

寫出了量子電路圖的字符串表示形式之後就可以輕鬆地將我們的程序轉換為基礎數學公式表達的形式。可以分為三個部分,即CNOT [control = 0,target = 1],(IH)和|00。每一部分都可以轉換成矩陣,如下圖的第一行所示:

我們甚至可以將矩陣相乘以找到結果狀態向量,如上所示。該狀態向量是量子計算完成後我們兩個量子比特的預期狀態。另外,我們可以將其視為程序的輸出。它告訴我們每種可測量狀態的概率幅度。

另外,還記得我們的混合態量子比特嗎?請注意,我們無法再次編寫量子比特x0和量子比特x1的純態了,因為沒有任何方法可以用張量積分解向量,因此我們的量子比特處於混合態!

測量狀態向量

如果我們現在測量量子比特會怎麼樣?我們會收到什麼結果?我們可以通過將狀態向量分解為可測量狀態來找出其結果。用標準基(也稱為|0和|1)(我們也可以測量其他基數,但現在不用擔心)來衡量量子比特。因此,我們兩個量子比特系統的可測量狀態為|00、|01、|10和|11。

就像我們可以使用|α|2來確定單個量子比特的|0的概率一樣,我們可以用同樣的方法來確定測量值的概率。由於|01和|10的概率振幅為0,因此我們知道我們永遠也不會測到該狀態。並且我們將以(1 / sqrt(2)) = 1/2的概率來測量到|00和|11。

現在,假設我們要將這兩個量子比特分開很長的距離,然後再測量其中一個。在我們測量它的那一刻,我們也將知道另一個量子比特的值!這是因為我們知道量子比特只能是|00或|11。

這就是愛因斯坦所說的「幽靈般的超距離作用」,也稱為量子糾纏(參見EPR佯謬)。

在量子計算機上運行

了解了量子比特、量子門和量子電路圖的原理之後,讓我們看看如何在真實的量子計算機上運行程序。可以使用Rigetti的量子計算機,因為他們目前向測試用戶免費開放。我們也可以使用IBM的量子計算機。

這是Rigetti量子編程過程的基本概述:

1. 編寫一個Python程序來指定您的量子電路和任何其他必需的代碼;

2. 使用量子模擬器測試該Python程序;

3. 給Rigetti的量子計算機預留出時間;

4. 將您的程序發送到Rigetti的伺服器;

5. 在Rigetti的伺服器上執行程序(他們會將您的量子程序發送給他們的量子計算機)。

這是上面的量子電路圖的Python版本:

from pyquil.quil import Programfrom pyquil.api import *from pyquil.gates import *# Apply H to qubit 0, then CNOT to qubit 0 and 1p = Program(H(0), CNOT(0, 1))# Get info for a 2-qubit quantum virtual machineqc = get_qc('2q-qvm')# Simulate programresults = qc.run_and_measure(p, trials=10)print(list(zip(results[0], results[1])))# Apply H to qubit 1, then CNOT to qubit 1 and 2p = Program(H(1), CNOT(1, 2))# Get info for a real 2-qubit quantum computer named Aspen-4-2Q-Aqc = get_qc('Aspen-4-2Q-A')# Send program to the quantum computer and run itresults = qc.run_and_measure(p, trials=10)print(list(zip(results[1], results[2])))結果是:

[(0, 0), (1, 1), (1, 1), (0, 0), (0, 0), (0, 0), (1, 1), (0, 0), (0, 0), (1, 1)][(0, 0), (0, 1), (1, 1), (1, 1), (1, 1), (0, 0), (0, 0), (1, 1), (1, 0), (0, 0)]第一行對應於模擬器,結果似乎合理——得到的[0, 0]與[1, 1]各佔一半。但是,使用真實的量子計算機,我們還收到不可能存在的[0, 1]和[1, 0]。這是怎麼回事?

問題在於,如今(2019年)的量子計算機仍然很容易出錯。例如,當嘗試將量子比特初始化為0時,會有2-3%的錯誤率。每個量子比特門操作的錯誤率為1-2%,而兩個量子比特門操作的錯誤率約為3-4%。甚至在測量量子比特時也會有錯誤率!這些錯誤會累積並導致錯誤的結果。

結尾

在本文中,我們可以知道,儘管錯誤率很高,但量子計算機實際上確實存在並且可以正常工作。儘管因不同公司的物理實現有所差別,對其編程的許多概念卻保持一致。

我們認為量子比特是具有單位長度的兩個複數的向量,並將量子門視為可逆的么正矩陣。量子計算是概率性的,因為一旦測量,兩個相同的量子比特可能具有不同的值。在較高的層次上,我們可以將量子編程視為對複數應用的線性代數。

我們使用量子電路圖來表示我們的量子程序,然後將其轉換為Python以在真實的量子計算機上運行。

至此,希望你已經可以寫出自己的量子程序了。

參考文獻:

[1] L. Susskind, Lecture 1 Quantum Entanglements, Part 1 (2008)

[2] Basis vector ordering in Qiskit (2019), Qiskit

[3] R. Smith, Someone Shouts 「01000」! Who is excited? (2017), arxiv

[4] Qubit Quality (2019), Quantum Computing Report

原文連結:https://towardsdatascience.com/introduction-to-quantum-programming-a19aa0b923a9

【互動問題:精通量子力學之後,你能做什麼?

請大家嚴格按照 互動:問題答案的格式在評論區留言參與互動,格式不符合要求者無效。

截止到本周四中午12點,點讚數前三名的朋友將獲得我們送出的圖書一本。

註:此活動僅限於微信平臺

編輯:aki

↓ 點擊標題即可查看 ↓

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

相關焦點

  • 零基礎如何入門學習電腦編程?
    零基礎如何入門學習電腦編程?有哪些好的方法呢?現在帶著疑問一起去了解一下吧。1、了解編程歷史的意義了解一些編程的實質遠比知道如何編程更有意義,不要在編程是怎麼回事的情況下就去學習編程,這樣對你的學習是十分不利的,作為一個編程愛好者,知道計算機的工作原理,這應該是一件再正常不過的事。
  • 反對函數式編程的政治正確
    大量相關的入門文章中,面向對象與命令式編程常常被作為對比的反例,彷佛它們已經是醜陋而骯髒的過時技術了。對這種矯枉過正觀點的擔憂,正是這篇文章寫作的初心。為什麼這裡會牽扯到政治正確呢?這是因為對編程範式的執著,已經或多或少地成為了一種道德綁架了:這很接近政治正確的背後,那種強大的道德信念。這種信念摻雜在了對程式語言的信仰之中,其結果是用非強迫的方式完成了對話語權的控制。
  • 電腦入門程式語言
    今天和大家介紹一下電腦入門編程學什麼語言更合適。首選python語言,python 是一門開源免費、通用型的腳本程式語言,現在社會上會python語言的人很吃香的。它上手簡單,功能強大,堅持「極簡主義」。
  • 物理不好,如何給量子計算機編程?
    ) 後,你就可以開始為量子計算機編程了。事實上,現如今存在的量子程式語言和在傳統程式語言基礎上建立的量子編程庫的數量可能比你想像的還要多。Quipper( https://www.mathstat.dal.ca/~selinger/quipper/ ):這是一個支持函數式量子編程的嵌入式量子程式語言,同時允許程式設計師採用比彙編語言更高級的方式去描述他們的算法。
  • 前沿顛覆性技術:量子計算
    現在,呈現在讀者面前的是一本關於量子計算與編程的專業教材,您可以從量子計算發展的源頭重新認識這一令世界各國都在「傾力一搏」的科技,同時您也能通過書中對於量子計算機結構及量子計算編程技術的詳細闡釋來了解當前量子計算的發展現狀和未來趨向
  • 若你不知道微軟的量子編程Q,那得知道新出的Silq量子程式語言
    迄今為止,對於我們很多大眾而言,量子計算機依然神秘依然高大上依然可望而不可即。而對於業內人士而言,量子計算機和量子技術的研究已經不是一天兩天了,科學家們的研究不亦樂乎,成果進展也可喜。比如,程式語言領域就迎來了一個重要的突破:第一種高級程式語言 Silq問世。
  • 學量子編程 情人節獲得個薛丁格的女朋友?
    量子計算是一個非常前沿的領域,也是一個典型的「月探」工程:它有著巨大的創造價值的潛力,也有很高的失敗風險。  在情人節之際,正在尋找機會的你,該不該考慮為量子編程做準備? 如何為量子編程做準備?  我們邀請長期關注量子計算領域的錢愉盈來回答這個問題,她也曾連續兩年在Robocup上獲獎。
  • 從基礎量子位到當下火熱的量子計算機,一文助你入門量子計算
    Nielsen 的量子計算科普性文章《Quantum Computing for the Very Curious》,詳細介紹了量子計算的入門知識,如量子位及其狀態、通用量子計算和量子計算機等。除了從兩個數字開始以外,你應該從一個數學猜想開始,經過算法的步驟,你就會知道這個猜想是否可以被證明。該算法可能過於耗時,無法在實踐中使用,但如果存在這樣的算法,那麼至少在原則上,數學是可以理解的。為了攻擊希爾伯特的這一問題,圖靈精確的定義了算法的含義,並描述了我們現在所稱的圖靈機器(Turing machine):可以執行任何算法的單一通用可編程計算設備。
  • 寫Python 代碼不可不知的函數式編程技術
    選自 Medium作者:Raivat Shah參與:魔王、Jamin本文對 Python 中的函數式編程技術進行了簡單的入門介紹。近來,越來越多人使用函數式編程(functional programming)。因此,很多傳統的命令式語言(如 Java 和 Python)開始支持函數式編程技術。
  • 谷歌、微軟聯合出品《量子計算機編程》公開課,教你怎麼寫量子代碼
    新智元報導 編輯:大明【新智元導讀】微軟和谷歌聯合推出了一門在線互動課程《量子計算機編程》,課程面向初學者,介紹量子計算編程的基本概念,並教授如何利用微軟的Q#語言編寫簡單的量子算法和代碼。課程在網頁瀏覽器中進行,無需開發環境。
  • 資料| Python入門經典:以解決計算問題為導向的Python編程實踐
    from=leiphonecolumn_res0429內容簡介 《Python入門經典:以解決計算問題為導向的Python編程實踐》是一本系統而科學的Python入門教程,美國密西根州立大學等多所美國知名高校採用其作為程式語言的入門教材,被奉為經典。
  • 中國量子計算團隊最新研究進展報告
    矽基半導體自旋量子比特晶片裝置示意圖和自旋弛豫速率的強各向異性這一重要進展在矽基半導體量子計算研究中從而極大的減少量子程序的執行時間。中國首個量子程序集成開發環境Qurator發布本源量子研發團隊開發出一款整QPanda量子編程框架、QRunes編碼及編譯於一體的集成開發環境Qurator。
  • 函數式編程很難,所以你要學習它
    很 奇怪不是,很少有人每天都使用函數式程式語言。如果你用Scala,Haskell,Erlang,F#或某個Lisp方言來編程,很可能沒有公司會花錢 聘你。這個行業裡的絕大部分人都是使用像Python,Ruby,Java或C#等面向對象的程式語言——它們用起來很順手。不錯,你也許會偶然用到一兩 個「函數式語言特徵」,例如「block」,但人們不會去做函數式編程。
  • 推薦6歲+,編程入門啟蒙,培養孩子的邏輯思維
    其實,編程的語言一直在不斷更新,比如從最早的BASIC,到PASCAL、C語言, 從C++,到JAVA等等,特別是現在隨著網絡的普及,智能家電越來越多的地方都是使用到編程,正是程式設計師提前設定好各種程序,像洗衣機,電飯煲等等,只不過它們所採用的程式語言不同而已。
  • 程式設計師編程入門必知!程式設計師需要學什麼
    在從事其他一系列Web開發之前掌握好HTML非常重要。C——最古老的語言之一,它已經是非常強大的工具,也是一些更現代的語言的祖先,比如C++,C#和Objective-C。學習語言的過程中還要有機會進行檢驗,不能只編寫代碼,還要檢驗代碼的結果運行是否正確,也就是某些可以運行結果的軟體我們要有,不過許多的程式語言都要求有被程式設計師設計來講代碼轉換成機器能理解的語言的編譯器。
  • 網際網路編程如何入門,學習路徑又是什麼?
    今天給大家來講一講網際網路學習編程以及如何入門等相關知識。2.多加幾個網頁後,你就會比較的明白為什麼的大家總是需要一個template語言工具了,然後可以自己去試一試,做出一個。4.然後開始為你的網站加一個windows桌面的客戶端,這個就是對模塊化能力的重大考驗。5.再然後你會發現寫了很多的重複代碼,你需要使用MVC和一些小的設計模型來去幫助你自己來劃分模塊。
  • 量子編程取得突破:量子計算機的第一種直觀語言
    #量子計算機對人類發展的影響#量子計算機的編程變得越來越容易:蘇黎世聯邦理工學院的計算機科學家設計了第一種程式語言,可以像傳統計算機一樣簡單、可靠、安全地對量子計算機進行編程。ETH智能系統實驗室(SRI)的計算機科學教授Martin Vechev說:「對量子計算機進行編程仍然是研究人員面臨的挑戰,這就是為什麼我如此興奮,以至於我們現在可以繼續蘇黎世ETH對量子計算機和程式語言的發展。」他認為:「與現有語言相比,我們的量子程式語言Silq使程式設計師能夠更好地利用量子計算機的潛力,因為代碼對於程式設計師而言更緊湊,更快,更直觀並且更易於理解。」
  • go 學習筆記之學習函數式編程前不要忘了函數基礎
    生物學家會下意識對動植物進行分類歸納,面向對象編程也是如此,用一系列的抽象模型去模擬現實世界的行為規律.標準的函數式編程具有濃厚的數學色彩,幸運的是,Go 並不是函數式語言,所以也不必受限於近乎苛責般的條條框框.
  • 量子科技需要什麼人才?
    但也不要怕,我覺得沒有什麼行業是離不開的,量子科技當然也不例外。要有學術功底,研究實力。最好還能自己去一些相關實驗室做做科研,不然就是浪費時間和人才。多學點程式語言,如java,python.至少一門是精通的,例如linux。
  • 深度強化學習從入門到大師:以刺蝟索尼克遊戲為例講解PPO(第六部分)
    為了實現一個PPO智能體,需要讀一讀如下包含完成PPO過程的筆記和代碼解釋: (((0)))(((1))) 如上所述,你已經創建了一個學習如何玩刺蝟索尼克系列遊戲1,2,3的智能體。太棒了!一個好的智能體需要在一個GPU上訓練10到15小時。 別忘了自己親自實現代碼的每一個部分,因為調試完善代碼是非常重要的。