收藏!從Python小白到大牛,要走的路這裡都有(高級篇)

2021-01-10 python大大

接上文。收藏!帶你見證Python小白到大牛的代碼成長之路(中級篇)

使用Python的高級項目

Python具有廣泛的應用程式-從「 Hello World」一直到實現人工智慧的一切。

您可以使用Python進行幾乎無限的項目,但是如果您想深入了解Python的核心,可以考慮以下主要項目。

使用PyTorch,TensorFlow,Keras和 任何您喜歡的機器學習庫進行機器學習。使用OpenCV和PIL的計算機視覺。使用測試和文檔創建和發布自己的pip模塊。

在所有這些中,最喜歡的絕對是從事機器學習和深度學習。來看一個非常好的例子,以深入學習Python。

在Python中使用TensorFlow實現CIFAR10

讓我們 訓練一個 網絡 , 使用內置的TensorFlow卷積神經網絡 對來自CIFAR10數據集的圖像進行分類 。

考慮以下 流程圖,以 了解 用例 的 工作原理:

讓我們將此流程分解解說:

首先將圖像加載到程序中這些圖像存儲在程序可以訪問的位置需要Python來理解存在的信息,因此我們需要進行標準化過程我們定義了神經網絡的基礎定義損失函數以確保我們在數據集上獲得最大的準確性訓練實際模型以了解有關其在這期間看到的數據的一些信息測試模型以分析準確性並在訓練過程中進行迭代以獲得更好的準確性

該用例分為2個程序。一種是訓練網絡,另一種是測試網絡。

首先訓練網絡。

訓練神經網絡:

import numpy as np import tensorflow as tf from time import time import math from include.data import get_data_set from include.model import model, lr train_x, train_y = get_data_set("train") test_x, test_y = get_data_set("test") tf.set_random_seed(21) x, y, output, y_pred_cls, global_step, learning_rate = model() global_accuracy = 0 epoch_start = 0 # PARAMS _BATCH_SIZE = 128 _EPOCH = 60 _SAVE_PATH = "./tensorboard/cifar-10-v1.0.0/" # LOSS AND OPTIMIZER loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=output, labels=y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate, beta1=0.9, beta2=0.999, epsilon=1e-08).minimize(loss, global_step=global_step) # PREDICTION AND ACCURACY CALCULATION correct_prediction = tf.equal(y_pred_cls, tf.argmax(y, axis=1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # SAVER merged = tf.summary.merge_all() saver = tf.train.Saver() sess = tf.Session() train_writer = tf.summary.FileWriter(_SAVE_PATH, sess.graph) try: print("Trying to restore last checkpoint ...") last_chk_path = tf.train.latest_checkpoint(checkpoint_dir=_SAVE_PATH) saver.restore(sess, save_path=last_chk_path) print("Restored checkpoint from:", last_chk_path) except ValueError: print("Failed to restore checkpoint. Initializing variables instead.") sess.run(tf.global_variables_initializer()) def train(epoch): global epoch_start epoch_start = time() batch_size = int(math.ceil(len(train_x) / _BATCH_SIZE)) i_global = 0 for s in range(batch_size): batch_xs = train_x[s*_BATCH_SIZE: (s+1)*_BATCH_SIZE] batch_ys = train_y[s*_BATCH_SIZE: (s+1)*_BATCH_SIZE] start_time = time() i_global, _, batch_loss, batch_acc = sess.run( [global_step, optimizer, loss, accuracy], feed_dict={x: batch_xs, y: batch_ys, learning_rate: lr(epoch)}) duration = time() - start_time if s % 10 == 0: percentage = int(round((s/batch_size)*100)) bar_len = 29 filled_len = int((bar_len*int(percentage))/100) bar = '=' * filled_len + '>' + '-' * (bar_len - filled_len) msg = "Global step: {:>5} - [{}] {:>3}% - acc: {:.4f} - loss: {:.4f} - {:.1f} sample/sec" print(msg.format(i_global, bar, percentage, batch_acc, batch_loss, _BATCH_SIZE / duration)) test_and_save(i_global, epoch) def test_and_save(_global_step, epoch): global global_accuracy global epoch_start i = 0 predicted_class = np.zeros(shape=len(test_x), dtype=np.int) while i < len(test_x): j = min(i + _BATCH_SIZE, len(test_x)) batch_xs = test_x[i:j, :] batch_ys = test_y[i:j, :] predicted_class[i:j] = sess.run( y_pred_cls, feed_dict={x: batch_xs, y: batch_ys, learning_rate: lr(epoch)} ) i = j correct = (np.argmax(test_y, axis=1) == predicted_class) acc = correct.mean()*100 correct_numbers = correct.sum() hours, rem = divmod(time() - epoch_start, 3600) minutes, seconds = divmod(rem, 60) mes = " Epoch {} - accuracy: {:.2f}% ({}/{}) - time: {:0>2}:{:0>2}:{:05.2f}" print(mes.format((epoch+1), acc, correct_numbers, len(test_x), int(hours), int(minutes), seconds)) if global_accuracy != 0 and global_accuracy < acc: summary = tf.Summary(value=[ tf.Summary.Value(tag="Accuracy/test", simple_value=acc), ]) train_writer.add_summary(summary, _global_step) saver.save(sess, save_path=_SAVE_PATH, global_step=_global_step) mes = "This epoch receive better accuracy: {:.2f} > {:.2f}. Saving session..." print(mes.format(acc, global_accuracy)) global_accuracy = acc elif global_accuracy == 0: global_accuracy = acc print("###########################################################################################################") def main(): train_start = time() for i in range(_EPOCH): print("Epoch: {}/{}".format((i+1), _EPOCH)) train(i) hours, rem = divmod(time() - train_start, 3600) minutes, seconds = divmod(rem, 60) mes = "Best accuracy pre session: {:.2f}, time: {:0>2}:{:0>2}:{:05.2f}" print(mes.format(global_accuracy, int(hours), int(minutes), seconds)) if __name__ == "__main__": main() sess.close()

輸出:

紀元:60/60全局步:23070-[ > ----] 0%-acc:0.9531-損失:1.5081-7045.4樣本/秒全局步進:23080-[ > ----] 3%-acc:0.9453-損失:1.5159-7147.6樣本/秒全局步:23090-[ => ---] 5%-累積:0.9844-損失:1.4764-7154.6樣本/秒全局步:23100-[ ==> --] 8%-acc:0.9297-損失:1.5307-7104.4樣本/秒全局步:23110-[ ==> --] 10%-acc:0.9141-損失:1.5462-7091.4樣本/秒全局步:23120-[ ===> -] 13%-acc:0.9297-損失:1.5314-7162.9樣本/秒全局步驟:23130-[ ====> ] 15%-acc:0.9297-損失:1.5307-7174.8樣本/秒全局步:23140-[ =====> ----] 18%-acc:0.9375-損失:1.5231-7140.0樣本/秒全局步:23150-[ =====> ----] 20%-acc:0.9297-損失:1.5301-7152.8樣本/秒全局步:23160-[ ======> ---] 23%-acc:0.9531-損失:1.5080-7112.3樣本/秒全局步:23170-[ =======> --] 26%-acc:0.9609-損失:1.5000-7154.0樣本/秒全局步長:23180-[ ========> -] 28%-acc:0.9531-損失:1.5074-6862.2樣本/秒全局步驟:23190-[ ========> -] 31%-acc:0.9609-損失:1.4993-7134.5樣本/秒全局步驟:23200-[ =========> ] 33%-acc:0.9609-損失:1.4995-7166.0樣本/秒全局步驟:23210-[ ========== ----] 36%-acc:0.9375-損失:1.5231-7116.7樣本/秒全局步長:23220-[ =========== ---] 38%-acc:0.9453-損失:1.5153-7134.1樣本/秒全局步驟:23230-[ =========== ---] 41%-acc:0.9375-損失:1.5233-7074.5樣本/秒全局步驟:23240-[ ============> --] 43%-acc:0.9219-損失:1.5387-7176.9樣本/秒全局步:23250-[ ============> ---] 46%-acc:0.8828-損失:1.5769-7144.1樣本/秒全局步驟:23260-[ =============> ] 49%-acc:0.9219-損失:1.5383-7059.7樣本/秒全局步驟:23270-[ =============> ] 51%-acc:0.8984-損失:1.5618-6638.6樣本/秒全局步驟:23280-[ ==============> ----] 54%-acc:0.9453-損失:1.5151-7035.7樣本/秒全局步驟:23290-[ ===============> ---] 56%-acc:0.9609-損失:1.4996-7129.0樣本/秒全局步:23300-[ ================> --] 59%-acc:0.9609-損失:1.4997-7075.4樣本/秒全局步驟:23310-[ ================> --] 61%-acc:0.8750-損失:1.5842-7117.8樣本/秒全局步驟:23320-[ =================> -] 64%-acc:0.9141-損失:1.5463-7157.2樣本/秒全局步驟:23330-[ ==================> ] 66%-acc:0.9062-損失:1.5549-7169.3樣本/秒全局步驟:23340-[ ===================> ----] 69%-acc:0.9219-損失:1.5389-7164.4樣本/秒全局步驟:23350-[ ==================> ----] 72%-acc:0.9609-損失:1.5002-7135.4樣本/秒全局步驟:23360-[ ===================> ---] 74%-acc:0.9766-損失:1.4842-7124.2樣本/秒全局步驟:23370-[ ====================> --] 77%-acc:0.9375-損失:1.5231-7168.5樣本/秒整體步驟:23380-[ ====================> --] 79%-acc:0.8906-損失:1.5695-7175.2樣本/秒全局步驟:23390-[ =====================> -] 82%-acc:0.9375-損失:1.5225-7132.1樣本/秒全局步驟:23400-[ =======================> ] 84%-acc:0.9844-損失:1.4768-7100.1樣本/秒全局步驟:23410-[ ========================> ----] 87%-acc:0.9766-損失:1.4840-7172.0樣本/秒總體步驟:23420-[ ========================== ---] 90%-acc:0.9062-損失:1.5542-7122.1樣本/秒全局步驟:23430-[ ========================== ---] 92%-acc:0.9297-損失:1.5313-7145.3樣本/秒全局步驟:23440-[ ==========================> -] 95%-acc:0.9297-損失:1.5301-7133.3樣本/秒全局步驟:23450-[ ===========================> -] 97%-acc:0.9375-損失:1.5231-7135.7樣本/秒全局步驟:23460-[ ============================> ] 100%-acc:0.9250-損失:1.5362-10297.5樣本/秒時代60-準確性:78.81%(7881/10000)此時期的準確性更高:78.81 > 78.78。正在保存會話... ########################################### ############################################### ############

用測試數據集運行模型:

import numpy as np import tensorflow as tf from include.data import get_data_set from include.model import model test_x, test_y = get_data_set("test") x, y, output, y_pred_cls, global_step, learning_rate = model() _BATCH_SIZE = 128 _CLASS_SIZE = 10 _SAVE_PATH = "./tensorboard/cifar-10-v1.0.0/" saver = tf.train.Saver() sess = tf.Session() try: print("Trying to restore last checkpoint ...") last_chk_path = tf.train.latest_checkpoint(checkpoint_dir=_SAVE_PATH) saver.restore(sess, save_path=last_chk_path) print("Restored checkpoint from:", last_chk_path) except ValueError: print("Failed to restore checkpoint. Initializing variables instead.") sess.run(tf.global_variables_initializer()) def main(): i = 0 predicted_class = np.zeros(shape=len(test_x), dtype=np.int) while i < len(test_x): j = min(i + _BATCH_SIZE, len(test_x)) batch_xs = test_x[i:j, :] batch_ys = test_y[i:j, :] predicted_class[i:j] = sess.run(y_pred_cls, feed_dict={x: batch_xs, y: batch_ys}) i = j correct = (np.argmax(test_y, axis=1) == predicted_class) acc = correct.mean() * 100 correct_numbers = correct.sum() print() print("Accuracy on Test-Set: {0:.2f}% ({1} / {2})".format(acc, correct_numbers, len(test_x))) if __name__ == "__main__": main() sess.close()

簡單輸出:

嘗試還原上一個檢查點...從以下位置恢復檢查點:./tensorboard/cifar-10-v1.0.0/-23460測試儀精度:78.81%(7881/10000)

那是一個非常有趣的用例,不是嗎?通過本文,了解了機器學習的工作原理,並開發了一個基本程序來使用Python中的TensorFlow庫來實現它。

結論

本文討論的Python項目應該可以幫助您開始學習Python,它會讓您沉迷並推動您實際學習更多有關Python的知識。 當您嘗試考慮問題並使用Python提供解決方案時,這將非常方便。 Python會幫你解決多個現實生活的項目,以及和這些概念將讓你達到速度如何就可以開始探索和了解項目的實際操作經驗。

從今天開始,你不止是是個小白,或是熟手,大牛之路已經在你眼前緩緩展開。

相關焦點

  • 收藏!最全從Python小白到大牛,要走的路這裡都有(一)
    收藏!長文!從Python小白到大牛,要走的路這裡都有面向項目的學習是學習編碼的最佳方法。Python是當今最需求的語言,為了幫助您學習它,以下是一些您可以探索的最重要的Python項目:Python遊戲Python圖像編程CIFAR10在Python中使用TensorFlow開始看吧,和從開始到放棄說再見俗話說的好,沒吃過豬肉還沒見過豬跑?
  • 收藏!從Python小白到大牛,要走的路這裡都有(中級篇)
    前文提要收藏!最全從Python小白到大牛,要走的路這裡都有(初級篇)俗話說的好,沒吃過豬肉還沒見過豬跑?Python雖然對大多數小白來說,可能是從入門到放棄的過程。探究起來,可能初入門的同學沒見到過Python美麗的全景,一直埋頭寫hello world太多了,喪失了對Python的愛才是放棄的主要原因吧。
  • 三個月從小白到數據分析師,都是靠著這份書單!
    從應對考試到解決實際問題,無論你是學生還是數據分析師,都能從中受益。那麼接下來就需要上手實踐了,做數據分析的工具有很多,比如大家常見的excel,還有python、R等程式語言,這裡首推python。2、《python核心編程(第二版)》Wesley J. Chun 著 CPUG 譯要用python進行數據分析,學習python這門語言是必須的了,這本書就是python編程的經典。
  • 小白如何安裝Python?分分鐘搞定!
    Hello,大家好,我是橘子呀~前一期給大家簡單介紹了一下python是什麼,Python的優勢以及Python在工作中的重要性,那麼就有很多同學說:「橘子,橘子,我想學Python但是現在到第一步就卡殼了,不會安裝python軟體呀。」
  • 《小灰教你零基礎學python》-Python入門語言
    這裡手機也是一樣的,手機可以看成縮小版本的電腦,也是有硬體和程序構成,硬體(按鍵、觸控螢幕、攝像頭、耳麥、電池、充電器)加上程序(日期時間、消息提示、微信、qq、騰訊視頻)。>c語言php(有人稱php是最好的程式語言)這裡包括咱本套課程需要學習的python,其實理解咱這麼理解就行:咱們和外國人交流需要說英語,那麼咱們必須要學會英語才能和對方溝通;咱們需要讓電腦進行「溝通」就必須要使用程式語言。
  • 大牛級別程式設計師帶小白入門Python,花7天整理最全面向對象教程!
    下面有大牛級別程式設計師帶小白入門Python,花7天整理最全面向對象教程!供參考學習!面向對象三大特性:多態: 可對不同類的對象使用同樣的操作。封裝:對外部世界隱藏對象的工作細節。 繼承:以普通的類為基礎建立專門的類對象。
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    最近在教育店集中地兒瞎晃悠,震驚的發現這年頭六歲娃兒都要學編程了,當時我的表情是這樣的。回到家抱著冷嘲熱諷的心,我特意百度搜索了下新聞,結果我的表情是這樣的:1、Python將納入浙江省高考!從 2018 年起浙江省信息技術教材程式語言將會更換為 Python。
  • 思維篇|如何成為一個運營大牛(二):運營立方體
    大家可能覺得很奇怪,特別在網際網路行業,一般來說我們都會稱之為「用戶」,但這裡為什麼會稱為「客戶」?在這裡我們解釋一下:首先來看一下產品的分類,不管是 ToB 還是 ToC的產品,都包括:實體產品、虛擬產品、實體+虛擬產品三種。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 數據分析入門學習指南,零基礎小白都能輕鬆看懂
    然而,讓很多朋友困惑的是,我是沒有編程基礎的小白,能學會數據分析麼?該如何學習數據分析呢?其實,如果你打算成為一名數據分析師,如何出身並不重要,數據科學是一門應用學科,你需要系統提升數據獲取、數據分析、數據可視化、機器學習的水平。下面我就簡單提供一個數據分析入門的路徑。第一階段:Excel數據分析每一位數據分析師都脫離不開Excel。
  • Python裝飾器以及高級用法
    介紹首先我要承認,裝飾器非常難!你在本教程中看到的一些代碼將會有一些複雜。大多數人在學習Python時都跟裝飾器做過鬥爭,所以如果這對你來說很奇怪,不要感到沮喪,因為同樣的大多數人都可以克服這種苦難。在本教程中,我將逐步介紹了解裝飾器的過程。首先我假設你已經可以編寫基本函數和基本類。
  • Python の在 VSCode 中使用 IPython Kernel 的方法
    要達到的效果:只需按下 Ctrl+;,選中的幾行代碼,就會自動發送到 IPython Kernel,並運行,得到結果!當然,快捷鍵也可以另行設置!replaceInputFocussed && editorLangId == 'python'" }然後,就可以做到,按下 Ctrl+;,直接發送選中行,到 IPython Kernel 了!
  • python字典操作大全,學習python第7天
    python字典跟列表類型,能存儲多個數據,並且還能在訪問元素的時候可以很快定位到需要的元素。而python字典操作方法有多少種呢?下面羽憶教程為您介紹。python字典python字典概念:python字典可以用來存儲任意類型對象,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開,結構如:sco = {'name':'小明','age
  • 成都Python培訓周期多久
    不同的培訓學校有不同的教學理念和教學方法,所以一定要選擇適合自己的,python基礎和進階基本可以把你教會,但是項目發展就因人而異了,並不是培訓完就一定可以找到工作。成都python培訓機構魚龍混雜,沒有熟人的推薦,很容易會陷入一個只管招不管教的假機構裡。因此,大家一定要擦亮眼睛。推薦你去成都千鋒教育,千鋒教育在信息技術培訓行業工作十多年,教學質量有擔保。
  • 為什麼數據分析要學習Python?
    混跡網際網路的同學們,或多或少都對「數據分析師」這一職業有所耳聞。即使你不認識任何數據分析師,也一定看到過這類研究報告或者文章:Smart is the new sexy.潛力巨大的數據分析崗位在資訊時代的今天,數據推動業務發展、數據輔助業務決策早已成為大勢所向,而順應大數據時代號召的人,薪資待遇自然也是讓人羨慕不已——數據分析師確實是高薪職業,大部分公司提供的待遇基本上是10K往上走;且隨著工作經驗的累積和技能樹的完善,薪資超過
  • Python爬蟲從入門到精通只需要三個月
    如何入門Python,為了能夠幫助大家更輕鬆的學好Python開發,Python爬數據,Python數據分析等相關理論知識,給大家共同分享自己一套Python學習生活資料,文章最後面的有附屬的相關資料,無論你是大牛還是小白,是想轉行還是想入行都可以來了解,一起不斷進步以及一起努力學習
  • 成都學習Python開發哪家好
    那麼成都python培訓機構有哪些好呢?成都市不同規模的python培訓機構有什麼不同?沒有任何一家機構所有的課程都是牛逼的,它和人一樣有優點和缺點,除非它只專注於教1-2門課程。大多數培訓機構都不願意這樣做。畢竟有那麼多程式語言,太過於專注會流失掉大量學生,從而造成營收減少的結果。建議您選擇信譽好的老牌Python培訓機構。
  • 廣州Python測試培訓
    學習Python有哪些好處? 除了極少的事情不能做之外,其他基本上都可以用,黑客編程、爬蟲編寫、機器學習、人工智慧等等。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • python用10行代碼寫一個USB病毒
    查了一下,發現只有windows上可以,具體的大家也可以搜索(搜索關鍵詞usb autorun)到。但是,如果我想,比如,當一個usb插入時,在後臺自動把usb裡的重要文件神不知鬼不覺地拷貝到本地或者上傳到某個伺服器,就需要特殊的軟體輔助。於是我心想,能不能用python寫一個程序,讓它在後臺運行。每當有u盤插入的時候,就自動拷貝其中重要文件。如何判斷U盤的插入與否?