1. 程式人生 > >Tensorflow入門系列(三)--官方新手教程詳解

Tensorflow入門系列(三)--官方新手教程詳解

官方教程詳解

Part 1 –資料集無法下載

在命令列模式下執行 python premade_estimator.py時會遇到報錯,錯誤原因是資料集無法下載。在iris_data.py這個檔案下,我們可以看到通過tf.keras.utils.get_file這個函式將資料集從”http://download.tensorflow.org/data/iris_training.csv“中拷貝過來。但由於無法訪問該網址,因此會出現報錯。解決辦法:通過其他途徑將iris的資料集(150條資料)下載,然後拆分為訓練集(120條資料)和驗證集(30條資料)。iris_data.py檔案的程式改動如下:

def maybe_download():
    #train_path = tf.keras.utils.get_file(TRAIN_URL.split('/')[-1], TRAIN_URL)
    #test_path = tf.keras.utils.get_file(TEST_URL.split('/')[-1], TEST_URL)
    train_path='/Users/stuyu/Desktop/Iris_dataset/iris_train.csv'
    test_path='/Users/stuyu/Desktop/Iris_dataset/iris_test.csv'
    return
train_path, test_path

Part 2 –命令列解析模組

在程式的開端premade_estimator.py檔案下,我們可以看到:

parser = argparse.ArgumentParser()
parser.add_argument('--batch_size', default=100, type=int, help='batch size')
parser.add_argument('--train_steps', default=1000, type=int,
                    help='number of training steps'
)

這一段程式碼是命令列解析程式,在命令列執行該python檔案時,我們可以通過加入–batch_size 和 –train_steps 來改變batch_size和train_step。
詳情請見https://www.cnblogs.com/yymn/p/8056487.html

Part 3 –特徵編碼

當程式繼續執行時,會遇到報錯

Traceback (most recent call last):
  File "/Users/stuyu/Documents/PythonCode/tf-slim/models/samples/core/get_started/premade_estimator.py", line 118, in <module>
    tf.app.run(main)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 126, in run
    _sys.exit(main(argv))
  File "/Users/stuyu/Documents/PythonCode/tf-slim/models/samples/core/get_started/premade_estimator.py", line 71, in main
    steps=args.train_steps)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 363, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 843, in _train_model
    return self._train_model_default(input_fn, hooks, saving_listeners)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 856, in _train_model_default
    features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 831, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/canned/dnn.py", line 347, in _model_fn
    config=config)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/canned/dnn.py", line 190, in _dnn_model_fn
    logits=logits)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/canned/head.py", line 771, in create_estimator_spec
    features=features, mode=mode, logits=logits, labels=labels)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/canned/head.py", line 682, in create_loss
    label_ids = self._label_ids(labels)
  File "/Users/stuyu/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/canned/head.py", line 665, in _label_ids
    format(labels.dtype))
ValueError: Labels dtype should be integer. Instead got <dtype: 'string'>.

報錯的最後一行提示我們Label應該為整數型,而不應該為字串。檢視資料,我們可以看到label基本是’Setosa’, ‘Versicolor’, ‘Virginica’。需要轉變成整數型。因此我們要用到sklearn庫裡的preprocessing.LabelEncoder。

#iris_data.py

from sklearn.preprocessing import LabelEncoder
...
def load_data(y_name='Species'):
    ...
    labelEncoder=LabelEncoder()
    train_y=labelEncoder.fit_transform(train_y)
    test_y=labelEncoder.fit_transform(test_y)

    return (train_x, train_y), (test_x, test_y)

由於資料集中是’Setosa’, ‘Versicolor’, ‘Virginica’依次排列的,故分別對應0,1,2。恰好和下面程式對應上了(內心一陣竊喜)。

#premade_estimator.py

# Generate predictions from the model
    expected = ['Setosa', 'Versicolor', 'Virginica']

此時,再次執行命令便可以成功運行了。

相關推薦

Tensorflow入門系列--官方新手教程

官方教程詳解 Part 1 –資料集無法下載 在命令列模式下執行 python premade_estimator.py時會遇到報錯,錯誤原因是資料集無法下載。在iris_data.py這個檔案下,我們可以看到通過tf.keras.utils.g

Vue入門系列Vue實例與生命周期

auto res context mode parent all from bool silent 【入門系列】 【本文轉自】   http://www.cnblogs.com/fly_dragon Vue的實例是Vue框架的入口,其實也就是前端的ViewM

Ambari系列: Ambari架構

前言 Hadoop叢集的管控一直是一個熱門的話題,對於這樣的一個應用場景,我所知道國內很早就有人研究並且取得不錯的成績,這就是EasyHadoop。它的功能主要有叢集安裝,管理,監控等功能,有興趣的朋友可以百度,這位作者的部落格有很詳細的介紹。今天,我所要重點介紹的Apac

Flutter入門系列---攜程Flutter實踐

文件來源:攜程技術中心 Flutter已經開源了三年,但是最近兩年才開始在開源社群活躍起來,尤其是最近還發布了Preview 1版本。作為可以實現一套程式碼同時在iOS、Android平臺上執行的又一個新的UI框架,Flutter提供給開發者的不僅僅是高速實現,還有高質量、流暢的UI。免費開源的

爬蟲入門系列:用 requests 構建知乎 API

爬蟲入門系列目錄: 在爬蟲系列文章 優雅的HTTP庫requests 中介紹了 requests 的使用方式,這一次我們用 requests 構建一個知乎 API,功能包括:私信傳送、文章點贊、使用者關注等,因為任何涉及使用者操作的功能都需要登入後才操作,所以在閱讀這篇文章前建議先了解

CSS入門系列關聯選擇器&組合選擇器

CSS入門系列(三)關聯選擇器&組合選擇器 目錄 1. 關聯選擇器 定義是:選擇器中的選擇器。假設如下: <div>這個<b>一個</b>div</div> <span>這

MongoDB入門系列:查詢SELECT

一、概述 mongodb是最接近關係型資料庫的NOSQL資料庫,它的儲存方式非常的靈活;以至於你會將它看成是一個經過冗餘過的關係型資料庫的表,這也是Mongodb原子性的一個特徵。由於沒有關係型資料庫的表之間的關聯關係和事務性所以Mongodb插入和更新的效率非常的高,同時也支援索引。我們在查詢的時候不能帶

Docker快速入門系列——CentOS-7.5下使用yum命令快速安裝Docker CE

                                            《 CentOs-7.5下安裝Docker CE 》 先決條件 在安裝Docker CE前,CentOS 系統版本應該升級到64位版本的 CentOS 7或以上,在這兒

tensorFlow入門實踐初識AlexNet實現結構

參數 variable alexnet with col 展望 port kernel 兩個 參考黃文堅《TensorFlow實戰》一書,完成AlexNet的整體實現並展望其訓練和預測過程。 import tensorflow as tf batch_size = 32

TensorFlow學習系列:儲存/恢復和混合多個模型

這篇教程是翻譯Morgan寫的TensorFlow教程,作者已經授權翻譯,這是原文。 目錄 在學習這篇部落格之前,我希望你已經掌握了Tensorflow基本的操作。如果沒有,你可以閱讀這篇入門文章。 為什麼要

SpringBoot入門系列---檢視解析

SpirngBoot – html 靜態訪問 springboot 預設靜態資源路徑 src/main/resource/static 在static下新增 a.html <

GDI+入門系列——字型

using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Text;         private void button1_Click(object sender, EventA

Tensorflow入門系列--tutorials/image/mnist程式

mnist官方程式詳解 在之前的文章中,我們在github上clone了TensorFlow/model這一個專案,這一次讓我們一起來看一下其下tutorials/image/mnist的程式。 首先,讓我們從程式的起始點開始看起。 parser =

SpringBoot入門系列資原始檔屬性配置

前面介紹了Spring的@Controller和@RestController控制器, 他們是如何響應客戶端請求,如何返回json資料。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天來說一說Spri

java加密算法入門-非對稱加密

共享數據 net clas 實例 查看 安全性 自己的 generator mir 1、簡單介紹 這幾天一直在看非對稱的加密,相比之前的兩篇內容,這次看了兩倍多的時間還雲裏霧裏的,所以這篇文章相對之前的兩篇,概念性的東西多了些,另外是代碼的每一步我都做了介紹,方便自己以後

機器人作業系統ROS教程 ROS新手教程

前面我們介紹了ROS的特點和結構,接下來就要開始準備動手感受一下ROS的強大了。ROS官網的wiki上針對 新手的教程很詳細,最好把所有的新手教程都搞清楚,這是後面開發最基礎的東西。儘管如此,ROS對於新手 來說還是很難上手,這裡,我就來總結一下我當時學習的歷程,也為其他新

緩沖區溢出實戰教程系列:利用OllyDbg了程序運行機制

成了 代碼段 下界 urn 方便 htm oca 相差 14. 想要進行緩沖區溢出的分析與利用,當然就要懂得程序運行的機制。今天我們就用動態分析神器ollydbg來了解一下在windows下程序是如何運行的。 戳這裏看之前發布的文章: 緩沖區溢出實戰教程系列(一):

深入淺出javaEE系列---web.xml配置

web.xml是web專案最重要的一個檔案 一:定義頭和根元素 <?xml version="1.0" encoding="UTF-8"?>         部署描述符檔案就像所有xml檔案一樣,必須以一個xml頭開始。這個頭宣告必

視覺SLAM十四講——A星演算法

點開全文 點開全文 點開全文 A* 尋路演算法 原文地址: http://www.gamedev.net/reference/articles/art

Redis學習 Redis 主從模式

不管任何程式,只執行一個例項都是不可靠的,一旦因為網路原因導致所在機器不可達,或者所在伺服器掛掉,那麼這個程式將不能對外提供服務了,Redis也是一樣的。不過Redis的主從並不是解決這個問題的,一些對Redis主從的理解,見這篇部落格:http://www.cnblogs.com/yiwangzh