分享好文,中學生要學電腦嗎?
作者:創新工場CTO、人工智慧工程院執行院長 王詠剛
文章来自半轻人微信公众号(ban-qing-ren)
………………………………
朋友的孩子高中剛畢業,已拿到美國頂尖大學(非電腦專業)的錄取通知。疫情影響,不知何時才能去學校報到。孩子想抓緊學習一下程式設計,為大學打好基礎。這孩子找我聊了一個多小時,從如何學程式設計,聊到非電腦專業和電腦專業的路徑差異,又聊到如何從不同角度認識電腦與程式設計。聊得比較寬泛,不知是否對這孩子有用。
回想我自己的高中時代:那時雖迷戀程式設計,卻完全沒有懂行的人指導。在我們那個四線城市的廠礦中學裡,開設電腦興趣課的老師知道的資訊還沒我多。我高一時跑到北京中關村逛街,卻完全沒意識到中國第一代頂尖程式師當時就在我身邊的低矮辦公樓裡寫代碼(這話說得並不準確,比如求伯君那年就主要是在珠海做開發),鼎鼎大名的UCDOS、WPS、CCED就出自他們之手……我在當時街邊的一家書店(位置似乎就在今天的鼎好大廈對面)買到了許多種印刷品質極低劣的電腦圖書。用今天的標準看,那就是一批盜版影印或未授權翻譯的國外圖書。可那批書竟成了我高中時代最寶貴的程式設計知識來源。
顯然,我在高中時根本就是野路子學電腦。現在後悔也沒用,當時我的眼界或能觸及的資源就那麼多。如果能穿越回30年前,我該對喜歡程式設計的自己說些什麼呢?這些年,我與世界上最好的一批程式師合作過,也參與過世界上最有價值的軟體系統研發——我所積累的一些粗淺經驗裡,有哪些可以分享給一個愛程式設計的中學生?
【問題1】中學生要不要學電腦?
當然要!
每個中學生都要學。只不過——建議大部分中學生使用“休閒模式”,小部分(不超過10%)中學生使用“探險模式”。
啊?兩個模式?那我該進入哪個模式?⟹請跳轉至【問題2】
【問題2】選哪個模式?
你癡迷電腦嗎?比如,你玩遊戲時會特別想知道這遊戲背後的代碼是如何編寫的嗎?再比如,就算老師家長不同意你學電腦,甚至當著你的面把電腦砸了,你也要堅持學電腦嗎?如果是,恭喜你進入“探險模式”⟹請跳轉至【問題200】
你對數學有興趣嗎?比如,你看到街邊建築的曲線,就會在腦子裡琢磨曲線對應的函數或方程嗎?每當手裡攥著幾粒骰子,你就會不由自主地計算概率嗎?如果是,歡迎進入“探險模式”⟹請跳轉至【問題200】;當然,如果有些猶豫,也可以先進入“休閒模式”⟹請跳轉至【問題100】
即便你對電腦和數學興趣不大,家長、老師還是強烈建議你學電腦嗎?就算你一百個沒時間一千個不願意,家長、老師還是會逼著你學電腦嗎?如果是,建議你主動進入“休閒模式”並向家長、老師彙報說“我已經按照前谷歌資深軟體工程師的專業建議在認真學程式設計了”⟹請跳轉至【問題100】
其他情況,一律進入“休閒模式”。⟹請跳轉至【問題100】
【問題100】休閒模式 | 主要學什麼?
“休閒模式”將電腦視為我們生活、工作中的必備工具,主要學習如何聰明、高效、優雅地使用計算設備。這裡說的計算設備,包括所有形式的電腦、手機、遊戲機、智慧家電以及未來一定會進入生活的自動駕駛汽車。
什麼什麼?你已經會用電腦、會玩手機、會打遊戲了?別著急,慢慢往下看。
【問題101】休閒模式 | 我會用搜尋引擎嗎?
我知道你會用百度搜習題答案。但,習題答案不是知識。你會用搜尋引擎來搜索和梳理知識嗎?請試著用電腦和你喜歡的搜尋引擎來解決如下兩個問題:
(1)圓周率𝜋的計算方法有多少種?每種不同的計算方法分別是由什麼人在什麼時代提出的?借助電腦,今天人們可以將圓周率𝜋計算到小數點後多少位?將圓周率𝜋計算到小數點這麼多位元,一次大概需要花掉多少度電?
(2)全球大約有多少個廁所?在發展程度不同的國家,分別有多少比例的人可以享用安裝了抽水馬桶的衛生廁所?為什麼比爾·蓋茨曾大力推動一個設計新型馬桶的研發專案?比爾·蓋茨的公益組織在這個專案上大約花費了多少資金,最終收到了多大的效果?
如果你沒法快速得到上述問題的全部答案,那就給自己設一個小目標:一個月內,學會用搜尋引擎系統地獲取、梳理一組知識點的全部技巧。
【問題102】休閒模式 | 接下來學什麼?
建議學好典型的工具軟體。比如,我知道你會用Office了,但用Office和用Office是很不一樣的。對生活、學習、工作來說,學好、學透一個工具軟體比鑽研程式設計技巧更實用。
你會用Excel來管理班級公益基金的預算和實際收支情況嗎?
你會用Excel做出過去20年裡全球大學排名的演變趨勢圖嗎?
你會用Word排版一篇中學生論文嗎?論文中的圖表和最後的參考文獻部分該如何排版?
你會用Word編排一份班級刊物,包含封面、扉頁、目錄、插圖頁、附錄、封底等部分,可以在列印後直接裝訂成冊嗎?
PowerPoint呢?你有沒有研究過蘋果公司發佈會上那些幻燈片的設計?當約伯斯(多年以前)或蒂姆·庫克站在幻燈片前的時候,他們的演講思路是如何與幻燈片完美結合的?
還有哦,別忘了學學如何為數碼照片做後期,如何用電腦或手機剪視頻,如何為剪輯好的視頻配字幕,如何將照片、音樂、視頻等素材結合起來,做出一段吸引人的快手/抖音短視頻。
最後,抽空玩玩那些設計精妙的遊戲吧,比如《紀念碑穀》、《塞爾達傳說:曠野之息》之類;同時,遠離那些滿屏廣告,或者一心騙你在遊戲裡充值花錢的垃圾。
【問題103】休閒模式 | 不學學知識嗎?
當然要學知識。下面每種實用的電腦知識都夠大家學一陣子了。
(1)色彩知識:你知道同一張數碼照片在不同品牌的手機螢幕上、不同的電腦螢幕上、不同的智慧電視上顯示時,為什麼經常有較大色差嗎?你知道有一些色彩只適合螢幕顯示,不適合列印輸出嗎?你知道軟體工具裡常用的RGB、HSL之類的色彩空間都是什麼意思嗎?如何在設計PowerPoint幻燈片時選擇一組和諧美觀的色彩?
(2)字體知識:你知道什麼是襯線字體,什麼是無襯線字體嗎?你知道網頁中常用的英文字體都有哪些嗎?你知道商務演講時最適用于幻燈片的英文字體有哪些嗎?你知道電腦和手機常用的黑體、宋體、仿宋體、楷體等中文字體分別適合哪些實際應用場合嗎?你會將不同字體混排成一個美觀的頁面嗎?
(3)網路知識:你知道5G是什麼嗎?你知道5G和4G在通信頻寬、通信距離上的具體區別嗎?你知道什麼是路由器,什麼是防火牆嗎?你知道如何配置路由器,如何配置防火牆嗎?微信或QQ聊天時,對方發的文字、語音或視頻是如何傳送到你的手機上的?
(4)應用知識:淘寶中搜索得到的商品資訊是從哪裡來的?商品是按什麼方式排序的?為什麼購物APP經常會推薦給你一些曾經買過、看過的商品?你知道如何為自己建立個人網站嗎?你知道如何管理微信公眾號嗎?
(5)安全知識:你知道網路上的釣魚攻擊是怎麼回事兒嗎?你知道什麼是電腦漏洞嗎?你知道駭客為什麼想把一大批受攻擊的電腦變成可以遠端操控的傀儡機嗎?你知道為什麼現在很多手機APP都要通過短信發送驗證碼嗎?如果驗證碼被壞人截獲,你會面臨哪些風險?
這裡只是舉例。實用的電腦知識還有很多。大家可以自己發掘。
【問題104】休閒模式 | 我需要學程式設計嗎?
可以學,但不是必須。即便學,也只需要根據自己的需要,學那些最能幫你解決現實問題的部分。
【問題105】休閒模式 | 我該學什麼程式設計語言?
在“休閒模式”裡,電腦就是工具,程式設計也是工具,夠用就好。學什麼程式設計語言,完全看你想要電腦幫你做什麼。
• 如果你想對資料處理有更多自主權,那不妨學學Python;
• 如果你想做簡單的交互演示程式,那就先把JavaScript學起來;
• 如果你想更好、更快地寫論文,那不妨學學LaTeX(什麼什麼,LaTeX不是程式設計語言?你太小看LaTeX了);
• 如果你想學做簡單的手機APP,那麼,Android手機就學Java,蘋果手機就學Swift好了;
• 如果你只想知道程式設計是怎麼回事,那……從Python或JavaScript開始就行。其實,跟五六歲的小朋友一起學學Scratch圖形程式設計也不錯。
【問題106】休閒模式 | 我需要學人工智慧嗎?
在“休閒模式”裡,最需要學的不是“人工智慧的實現原理”,而是“什麼是人工智慧”,以及“人工智慧能做什麼,不能做什麼”。
• 在手機上試一試,人工智慧做語音辨識時能做到什麼水準?哪些話容易識別,哪些話不容易識別?
• 打開機器翻譯軟體,試一試哪些資訊翻譯得好,哪些資訊翻譯得不好?
• 手機上的拍照軟體一般都有人臉識別功能。試一試人臉識別在什麼場景下做得好,什麼場景下做得不好?
• 找一部講人工智慧的科幻電影,用自己的判斷解讀一下,電影裡哪些技術有可能成為現實,哪些技術存在邏輯矛盾。
【問題107】休閒模式 | 推薦什麼參考書、參考文獻?
書不重要,豆瓣評分7分以上的電腦應用、程式設計甚至科普類圖書都可以拿來翻翻。
直接在知乎裡搜索你想瞭解或學習的知識點可能更有效率。
如果你意猶未盡,覺得自己剛活動開筋骨,還想挑戰更高層次,歡迎進入“探險模式”。⟹請跳轉至【問題200】
否則,“休閒模式”到此結束。⟹請離開此問答
【問題200】探險模式 | 主要學什麼?
“探險模式”需要有挑戰精神。電腦科學的世界技術演進快,脈絡複雜,要想在探索時不迷路,你得通過有順序、有系統地學習電腦知識,慢慢構建出一張可以在未來幫你走得更遠的思維地圖來。
在“探險模式”裡,電腦就不止是一件能快速計算的工具了。電腦更像是我們大腦的一種延伸。這既包括認知能力的延伸,也包括認知邏輯的延伸。隨著學習深入,大家會逐漸體會到電腦所具有的多維度能力:
電腦是一種可以表示不同類型資訊(數、符號、文字、語音、圖像、視頻、虛擬空間、抽象邏輯)的“資訊管理機”;
同時,電腦也是一種可以連續執行指令以完成特定的資訊處理任務的“指令處理機”;
同時,電腦還是一種可以在知識與邏輯層面完成特定推理任務的“知識推理機”;
同時,電腦也是一種可以從人類給定的資料或自我生成的資料中總結規律,建立模型,自主完成某些決策的“智慧學習機”。
“探險模式”的目標就是盡可能準確地認識電腦,掌握有關電腦運行的最基本規律。有了這些基礎。未來在大學期間或工作中,你就能更容易地設計電腦軟硬體系統,或是設計出碳基大腦(人類)與矽基大腦(機器智慧)之間的最佳協作方案。
【問題201】探險模式 | 我的英語水準足夠嗎?
蘋果每年秋季的新品發佈會,不加字幕的話,你能聽懂多少?
能聽懂大部分:建議在學習電腦的過程中,盡可能使用英文教材、英文文檔。
能聽懂小部分:建議將原來準備學電腦的時間,分出一部分來學英語。
只能聽懂“你好”“再見”之類:⟹請離開此問答。然後,把原來準備學電腦的時間用於學英語,六個月後再回來。
【問題202】探險模式 | 我的數學水準足夠嗎?
如果你是數學和數學應用小能手——較複雜的數學問題總能快速找到核心思路,或快速簡化為簡單問題;很容易就能將抽象概念映射到具體的數學圖形,或將數學問題與相應的現實問題關聯在一起:請繼續探險之旅。
如果你應付正常數學課程感到吃力:建議將原來準備學電腦的時間,分出一部分來學數學。
如果你還搞不清楚什麼是方程、函數、集合、概率……:⟹請離開此問答。然後,把原來準備學電腦的時間用於學數學,六個月後再回來。
【問題203】探險模式 | 為什麼強調英語和數學?
(1)統計上說,最好的電腦參考資料大都是英文寫的,最好的電腦課程大都是用英文講的,最新的電腦論文大都是用英文發表的。
(2)函數、方程、坐標系、標量、向量、排列組合、概率這些中學數學裡會初步學習到的數學知識,是電腦科學的基礎。
【問題204】探險模式 | 電腦知識那麼多,正確的學習順序是什麼?
最重要的順序有兩個。建議先從順序一開始,學有餘力時兼顧兩個順序。
順序一:自底向上,即,自底層原理向上層應用拓展的順序。
電腦原理的基礎知識:
為什麼每台電腦(包括手機)都有CPU、記憶體和外部設備?
(馮·諾依曼體系結構的)記憶體中為什麼既可以存儲資料,也可以存儲指令?
CPU是如何完成一次加法運算的?
程式設計語言的基礎知識:
資料類型,值,變數,作用域……
語句,流程控制語句……
過程、方法或函數,類,模組,程式,服務……
編譯系統的基本概念:
電腦程式是如何被解釋或編譯成目標代碼的?
演算法和資料結構的基礎知識:
陣列,向量,鏈表,堆,棧,二叉樹,樹和圖……
遞迴演算法,排序演算法,二叉樹搜索演算法,圖搜索演算法……
應用層的基礎知識:
為什麼電腦需要作業系統?設備驅動程式是做什麼的?
網路通信的基本原理是什麼?流覽器是怎麼找到並顯示一個網頁的?
資料庫是做什麼用的?
虛擬機器是怎麼回事?
人工智慧系統的基礎知識:
先熟悉些線性代數、概率和數學優化的基礎知識。
什麼是機器學習?從簡單的線性回歸中體會機器學習的基本概念、基本思路。
什麼是神經網路?什麼是深度神經網路?為什麼神經網路可以完成機器學習任務?
如何使用PyTorch或TensorFlow實現簡單的深度學習功能?
順序二:自頂向下,即,自頂層抽象邏輯向下層具體邏輯拓展的順序。
• 電腦的本質是什麼?
• 什麼是圖靈機?什麼是通用圖靈機?
• 什麼是讀取﹣求值﹣輸出迴圈(Read–eval–print Loop,REPL)?
如何用自頂向下的方式理解(解析、解釋、編譯)一段程式碼?
• 靜態語言和動態語言的區別?
如何理解變數與資料類型之間的綁定關係?
• 什麼是函數式程式設計?
程式設計語言中,函數的本質是什麼?
函數為什麼可以像一個值一樣被表示、存儲、傳遞和處理?
• 什麼是物件導向?
類的本質是什麼?
如何用物件導向的方式定義個功能介面?
如何依據介面實現具體功能?
• 什麼是事件驅動?
什麼是事件?事件如何分發到接收者?
如何在事件驅動的環境中理解代碼的狀態和執行順序?
【問題205】探險模式 | 如何提高程式設計水準?
在掌握基本知識體系的基礎上,學好程式設計只有一條路:多程式設計,多參加程式設計比賽,多做程式設計題,多做實驗項目,多找實習機會——其中,能參與真實專案是最有價值的。
【問題206】探險模式 | 該從哪一門程式設計語言學起?
我個人推薦的程式設計入門語言(可根據情況任選):
Python
Java
Swift
C#
JavaScript / TypeScript
Ruby
……
可能不適合入門,但適合後續深入學習的語言:
C
C++
Go
Objective-C
組合語言
機器語言(CPU指令集)
Shell Script
Lua
Haskell
OCaml
R
Julia
Erlang
MATLAB
……
【問題207】探險模式 | 如何選參考書和參考資料?
(1)強烈推薦的參考書和參考資料:
• MIT、Stanford、CMU、UC Berkeley這四所大學中任何一個電腦專業方向使用的教學參考書或參考資料。網上可以查到這些學校電腦專業方向的課程體系,有的學校甚至公開了課程視頻。其中往往會列舉參考書和參考資料連結。
• 維琪百科(英文)上的數學、電腦科學相關條目。
• Github上star數在1000以上的開原始程式碼和開來源文件。
(2)強烈推薦但須小心辨別的參考資料:
知乎上的數學、電腦科學相關條目。使用時需要格外注意三件事:
儘量只看高贊答案或高贊文章;
辨別並避開廣告軟文;
辨別並避開純抖機靈的故事或段子。
Stack Overflow上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
CSDN上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
(3)其他推薦的參考書和參考資料:
國內專業作者寫作的專業技術書籍(豆瓣評分7分以上的)。
大廠(Google、Facebook、Microsoft、Amazon、阿裡、騰訊、百度、頭條等)資深工程師的技術公號、專欄、博客等。
著名圖書系列:如O’Reilly的動物封面的系列圖書(請注意最新版本和時效性)。
國內翻譯的著名技術圖書(譯本在豆瓣評分7分以上的)。
(4)儘量避免的參考書和參考資料:
• 已經過時的圖書或參考資料。
• 作者或譯者人數比章節數還多的專業圖書。
• 百度百科上的數學或電腦科學相關資料。
什麼什麼?你這篇問答居然沒有推薦一本具體的圖書?是,沒錯。如果你覺得即便有了上面的線索,自己還是找不到好書好資料,那也許你還是適合“休閒模式”⟹請跳轉至【問題100】
同時也有10000部Youtube影片,追蹤數超過62萬的網紅Bryan Wee,也在其Youtube影片中提到,...
「python排列組合」的推薦目錄:
- 關於python排列組合 在 李開復 Kai-Fu Lee Facebook
- 關於python排列組合 在 Facebook
- 關於python排列組合 在 紀老師程式教學網 Facebook
- 關於python排列組合 在 Bryan Wee Youtube
- 關於python排列組合 在 Travel Thirsty Youtube
- 關於python排列組合 在 スキマスイッチ - 「全力少年」Music Video : SUKIMASWITCH / ZENRYOKU SHOUNEN Music Video Youtube
- 關於python排列組合 在 看板Python - Re: [問題] 排列組合問題 - 批踢踢實業坊 的評價
- 關於python排列組合 在 Python强大的排列组合库,编程解各类数学题不再烦恼。 的評價
- 關於python排列組合 在 Re: [問題] 排列組合- 看板Python - PTT網頁版 的評價
python排列組合 在 Facebook 八卦
🌟免費兒童程式課程體驗
🌟海外也可報名體驗
在十九世紀蒸汽動能機器普遍進入人類社會後,人類生產製造方式產生巨大改變,多數的人力及手工被機器剝奪取代。當時毫無招架能力的人類面對高效率的機器怪獸,也只能拱手讓出職位,許多良民百姓深受失業貧窮之苦,興起了一場工業革命,進而也把人類社會推向一個嶄新的「工業時代」。
-
經過兩世紀,隨著電腦、網路的高科技發明,時代的巨輪又將人類逐漸推向「人工智慧時代」。英國牛津大學研究指出『未來十年內,有47% 的工作可能被高科技的人工智慧取代』。另外,Google工程總監雷蒙德.庫茲威爾也預測『到 2045 年,AI 智慧將超越人類智慧,許多人的飯碗恐怕也將被淘汰』。
-
人類與 AI 共生共存也已是不可抗拒之命運,尤其又經過了這次的病毒疫情席捲,更加速推動世代的變遷,全人類一批批正往虛擬網路、人工智慧的新世界接踵邁進。因此,現今人類要以工業時代歷史為借鑑,為了避免孩子未來職場被機器人剝奪,在教育觀念上要有所改變,傳統的博聞強記之學應避免,邏輯思考力及創造力才是未來孩子必須培養的能力。
-
《Cheers》雜誌也曾在報導上建議『當面對 AI 浪潮,與其仇視 AI 為搶走工作的敵人,不如與它們合作,各取所長,互補其短。充分了解它們的基本概念、運作邏輯是首要之務。』
-
為了讓新一代輕鬆能輕鬆面對高科技 AI 未來的瞬息萬變,多年前美國的學校、社區或課後班已提供孩子各種程式教育課程。五、六歲的孩子藉由與各種機器人的互動或簡單的樂高遊戲來接觸程式語言的邏輯概念。尤以科技工程師滿山遍谷的矽谷這帶,程式語言教育開發更甚普遍。
-
程式語言對有數理頭腦的孩子是件相當好的創造工具。孩子一進入程式語言變幻莫測的排列組合之間時恍如進入異彩紛呈的魔幻空間,循序漸進地去熟悉掌握語言工具之後,孩子便能發揮能力,激發創意,展現自己。他們大腦不能單單只是被電腦及手機給控制,而是要學會操控這些人工智慧語言,為人類未來建立更美好的新思路。
-
前陣子我也起了讓兒子參加程式教育課程的念頭,希望他在閒暇除了跟朋友們相約連線打電動、聊天外,也能涉獵這些娛樂功能背後所隱藏的語言密碼,讓他大腦培養更清晰的邏輯思考力、解決問題能力及激發創造力。
-
恰巧台灣「 橘子蘋果兒童程式學苑 」特別來邀請兒子免費體驗他們的線上程式教育課程。對電腦有高度興趣的兒子欣然答應。我預約了美國晚上七點到九點的時段 (台灣早上十點到十二點)讓他在遠端平台上線試試「 Scratch 程式設計課程」。
-
起初,我也擔心兒子的中文專業字彙能力有限,會無法吸收課程內容。當準時上線時,專業老師立馬先清楚有條地解說平台的使用方式及上課模式。兒子發現問題馬上可視訊提問,看來師生之間互動交流無障礙,兒子很快便進入學習狀況。
-
橘子蘋果所使用的網路教學平台功能相當完善。兒子先根據課程進度逐一觀看教學影片,然後換到學習平台畫面-自行試著把剛剛學到的程式寫出來。雲端教室內的老師可透由平台上看見兒子的編寫的過程,並給予幫助。若語法寫錯無法順利執行操作時,老師即時進行講解以排除障礙。有時他們之間也會用簡單的英文交流。師生之間溝通流暢度及趣味度與親臨現場教室無異。兒子學習過程相當順利且愉快,也成功地設計了第一款小遊戲。
-
上完兩個小時的課後,設計遊戲的成就感在兒子內心竄動,他對程式語言的興趣大增,拜託我能幫他報名進階課程。看他喜形於色地玩著自己設計的遊戲時,證明此堂體驗課的學習成效頗大,促使我又進一步去了解整體的課程規劃及報名方式。
學苑主任 Roy 老師,在體驗課後親切詳盡解說了橘子蘋果的創建理念及整套課程的規劃。
-
我非常激賞橘子蘋果創辦人 Raymond 自矽谷回台後,十多年來策馬前驅竭力推動台灣兒童的程式教育,成功地開發教材,將四十幾間教室駐點遍佈台灣,並提供規模完善的程式教育環境,課程編排也與時俱進,其優秀的專業師資及教育品質不亞於美國。學成的學員更能進一步與學界、業界進行交流、測驗及比賽,讓熱愛程式語言的兒童能盡情發揮所長,天賦不被埋沒。
-
他們目前提供由淺至深提供了一整套國小到國中孩子設計的程式教育課程,包括:
→ 初階:Scratch 程式設計課程
→ 進階:Python、Java Script 程式開發及 HTMK/CSS 網頁開發
→ 高階:網路資料庫應用、演算法、AI 人工智慧。
-
❤️有興趣的父母可以先幫孩子報名橘子蘋果所提供的『首次免費線上程式體驗課程:👉 http://oaoa.fun/3axu8k 』。
如果像我們一樣是居住在美西的孩子亦可選擇〈太平洋時間周五或周六晚上7:00-9:00〉上課。
-
❤️至於最後讓我決定讓兒子報名參加橘子蘋果程式語言線上課程,原因除了他們提供了專業師資課程、順暢的交流平台外,還有以下三點:
◆ 個人化進度:根據學員的程度個人化學習。程度不好的孩子可以學得慢一些讓學習的每一步驟能更穩健札實;程度好的可以加快學習速度,盡早完成整套課程。
◆ 節省交通時間:線上課程最大的好處就是父母不用浪費時間當司機,辛苦往返接送孩子,大大減少舟車勞頓之苦。
◆ 加強中文溝通能力:針對海外學子來說還可以進一步增強中文聽說讀寫能力,何樂而不為。
-
#學程式就到橘子蘋果
#免費兒童程式課程體驗
◎ 橘子蘋果每年還有舉辦夏令營活動,也深受台灣孩子們的喜愛。若暑假期間有回台灣的海外學子也可以參考看看。
👉 贈送給你們~價值千元的免費體驗課程連結:http://oaoa.fun/3axu8k
❤️ 歡迎大家分享給有需要的朋友
python排列組合 在 紀老師程式教學網 Facebook 八卦
[筆記分享] 我如何在 Anaconda 上,安裝 TensorFlow 2.x,並開啟 GPU 加速
Evernote 網址: https://bit.ly/33K77F9
--------------
最近我正在台大計算機中心,教授「深度學習」這門課程。整門深度學習,用得最多的函式庫就是 TensorFlow 了。它可以用來建構深度學習所需要的「神經網路」架構,所以任一個深度學習工程師,都得要會安裝。
深度學習的開發環境很多!我個人偏好 Google Colab(線上環境)與 Anaconda(本地端環境)。Colab 的執行環境,Google 工程師已經幫你裝好了。你只要點擊 https://colab.research.google.com 就能用。比泡麵還簡單!但你也只能被動接受 Google 工程師幫你裝好的執行環境。畢竟「線上平台」彈性還是比「本地端平台」要小一點。
早期(TensorFlow 1.x 時期)要裝 TensorFlow,並開啟 GPU 圖形加速功能,只要開啟 Anaconda Prompt 命令列視窗,輸入下面這一行就可以了:
conda install tensorflow-gpu
但 TensorFlow 2.x 之後,Anaconda 並沒有把 conda 這個指令調整得很好。大家已經用到 TensorFlow 2.3 了,conda 安裝出來的最新版居然只到 TensorFlow 2.1。更慘的是,開啟 GPU 加速時,所需搭配的 cuDNN 函式庫與 CUDA Toolkit 版本,也跟 TensorFlow 2.1 這個版本衝得亂七八糟!總之,就是一堆同學裝不起來!機器空有獨立顯卡,但無法發揮 GPU 加速平行運算的能力!
有鑑於此,我今天早上就親自「試水溫」,想辦法找出這幾樣東西的排列組合,到底怎麼樣是對的:
Python版本 x nVidia驅動程式版本 x TensorFlow版本 x cuDNN 函式庫版本 x CUDA Toolkit版本
也順便找出最順暢的安裝流程,分享給大家。希望有需要的朋友能喜歡!
祝福大家都能釋放顯卡平行處理的威力,讓你跑神經網路時,硬是比別人快好幾倍!
有我說明不足的地方,歡迎在下方留言。不敢說一定有能力解決,但我會盡力的! :-)
PS: 本文歡迎轉發、按讚、留言鼓勵我一下!您的隻字片語,都是讓我繼續提供好物的動力喔!
--------
看更多的紀老師,學更多的程式語言:
● YOTTA Python 課程購買: https://bit.ly/2k0zwCy
● YOTTA 機器學習 課程購買: https://bit.ly/30ydLvb
● Facebook 粉絲頁: https://goo.gl/N1z9JB
● YouTube 頻道: https://goo.gl/pQsdCt
如果您覺得這個粉絲頁不錯,請到「評論區」給我一個好評喔!
https://www.facebook.com/pg/teacherchi/reviews/
python排列組合 在 Bryan Wee Youtube 的評價
python排列組合 在 Travel Thirsty Youtube 的評價
python排列組合 在 スキマスイッチ - 「全力少年」Music Video : SUKIMASWITCH / ZENRYOKU SHOUNEN Music Video Youtube 的評價
python排列組合 在 Re: [問題] 排列組合- 看板Python - PTT網頁版 的八卦
之銘言: : 用ATCG排列出所有長度為8的序列組合? : 原本想用1..65536 去mod 4 : 把數字轉換成4進位: 好像又有點複雜: 不知道各位有沒有比較好的寫法? ... <看更多>
python排列組合 在 看板Python - Re: [問題] 排列組合問題 - 批踢踢實業坊 的八卦
※ 引述《bibo9901 (function(){})()》之銘言:
: 標題: Re: [問題] 排列組合問題
: 時間: Thu May 19 03:04:12 2016
:
: ※ 引述《feynmankao (最愛我的老婆!)》之銘言:
: : 大家好,我是python初學者,碰到一個各位高手應該都可以秒殺的問題
: : 我現在想要弄出一個list含有一個變數n: 先稱為L(n)
: : L(n) 是一堆list 組成的 list。
: : L(1) = [[1],[2],[3],[4]]
: : L(2) = [[1,1],[1,2],[1,4],[2,1],[2,2],[2,3],[3,2],[3,3],
: : [3,4],[4,1],[4,3],[4,4]]
: : ...
: : 簡單的說 L(n) 是所有長度為 n 且滿足下列條件(1)(2)(3) list L(n)[i] 的 list
: : 條件(1): 在 L(n)[i] 裡的 元素都取自 [1,2,3,4]
: : 條件(2): 元素1和3 不能相鄰; 2和4不能相鄰
: : 條件(3): L(n)[i] 頭尾二個元素要滿足,如果頭是1,尾就不能是3;
: : 頭是3,尾就不能是1; 頭是2,尾就不能是4; 頭是4 尾就不能是2
: : ------
: : 比如說 [1,1,1], [1,1,2],[1,1,4],[1,2,1],[1,2,2]... 都會在L(3) 裡
: : 但 [1,3,2], [1,2,4] 不滿足(2); [1,2,3], [4,1,2] 不滿足(3) 都不會在L(3)裡
: : ------
: : 我保證這不是學校作業,這是我研究上要用到的計算,不過因為初學Sage,
: : 所以python語言還不是很熟練,希望大家指點一下。
: : 感恩~
:
:
: 你只要有辦法做出"所有1開頭的合法序列", 透過輪換就可以得到所有的序列
:
: 例如, 假設我們已經知道 (1,2,1,4) 是合法的, 那我們很快就可以產出另外 7 種
:
: 1 2 3 4 (1,2,1,4) * 已知
: 1 4 3 2 (1,4,1,2) 1用1取代, 2用4取代, 3用3取代, 4用4取代
: 2 1 4 3 (2,1,2,3) 1用2取代, 2用1取代, 3用4取代, 4用3取代
: 2 3 4 1 (2,3,2,4) 以下類推
: 3 2 1 4 (3,2,3,4)
: 3 4 1 2 (3,4,3,2)
: 4 1 2 3 (4,1,4,3)
: 4 3 2 1 (4,3,4,1)
這邊我有些不同的看法...
"有辦法做出所有1開頭的合法序列, 透過輪換就可以得到所有的序列"
這句話原則上是沒錯
但實用上沒有若沒有進一步的巧思可能還是沒法好用
注意到上面用(1,2,1,4)輪換出的(1,4,1,2)
他同樣是在1開頭的合法序列中
稍後要對(1,4,1,2)再做輪換時要跳過才能避免重複
又例如對(1,1,1,1)做輪換顯然是對應另外2,3,4的三組序列而不是7組
b大在上面提供的八個一組輪換並不適用所有元素,還需要再加工
以原po所說"想產生一個包含所有滿足某條件的list"這樣的需求
我揣測至少有兩類常見的後續動作的可能性:
1. 想知道在各個N下滿足條件的元素的個數
2. 想iterate過整個list做後續處理 (單純印出來存下來也屬於此類)
若不能保證產生的list沒有重複,對以上這兩類應用不好直接用
如果原po的需求只是上述的1.
那利用b大提供的、或其他各種遞迴關係嘗試解通式是很棒的
如果需求是第二種,要達到時間複雜度大O最佳似乎並不困難
差別只在實作細節影響的係數上
考慮到存整個list對空間複雜度的需求
我覺得前陣子用過的generator作法值得提出來給你參考
僅占用少數記憶體空間就可以iterate所有解是最主要的好處
請參考Gist處女秀! 有請各位大大不吝指正
https://gist.github.com/socketam2/a46413f9ecea0e4a805801c585608ef3
如果正確性沒問題的話,
這邊第二種優化的版本比第一種快一倍多
N=13時,清點近160萬個組合,耗時4.110 sec VS 1.712 sec
*************************
強力推薦 <Python2.7>/Lib/test/test_generator.py
我覺得這邊的各種test都很有啟發性啊
*************************
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.176.157
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1463761011.A.B49.html
很適合用generator邊產生元素邊做 不用等整個list生成喔
另請問你的N需要多大呢?
※ 編輯: SocketAM2 (58.114.176.157), 05/21/2016 22:54:46
我猜你應該一定需要generator了
就算是用2個bit表示每個1234,
整個列表也需要約2*20*5*10^9 bit = 25 GByte
如果真是用python的list的話應該需要這數字的20倍以上 (甚至接近100倍)
而且這還只是"存著這些列表",什麼後續動作都還沒做
我的code雖然記憶體用的少(<3MB吧),但速度可能還不夠用
如果你願意分享(或其他版友有有興趣的話)
我很想見識一下這問題能加速到多快
※ 編輯: SocketAM2 (58.114.176.157), 05/21/2016 23:42:51
補個結果 (i5-2400, DDR3-1333)
N = 20 : count = 3486784404, iter_time = 4004 sec
※ 編輯: SocketAM2 (58.114.176.157), 05/22/2016 00:11:04
... <看更多>