1. 程式人生 > >TensorFlow學習筆記6——《面向機器智慧的TensorFlow實踐》StanfordDog例程修改記錄

TensorFlow學習筆記6——《面向機器智慧的TensorFlow實踐》StanfordDog例程修改記錄

    《面向機器智慧的TensorFlow實踐》深入淺出,將tensorflow的很多概念講的很清楚,很適合tensorflow的初學者學習。該書完整的程式碼在https://github.com/backstopmedia/tensorflowbook點選開啟連結可以下載到。這本書最大的缺陷是其中的例子是基於tensorflow 0.8版本的,現在tensorflow已經到1.0版本,有些函式已經更新,在跑其中的例程時,需要修改。1.0版本的主要更新網上隨便就能找到。 除了tensorflow的版本問題之外,程式碼中還有一些小bug,或者因為讀者python編譯器的配置問題,導致例程無法跑通。本文是我除錯該書第5.5節
StanforDog例程記錄的問題。

          1、控制檯提示錯誤'utf-8' codec can't encode character '\udcd5' inposition 2575: surrogates not allowed

 逐個函式遮蔽,然後逐條語句遮蔽(原諒我對python 不熟,只能這樣找到問題),發現是執行def write_records_file(dataset, record_location)函式時的下述語句報錯。
record_filename = "{record_location}-{current_index}.tfrecords".format(
                    record_location=record_location,
                    current_index=current_index)
       可以看出是寫tfrecord時的路徑問題。        呼叫該函式的程式碼為:
write_records_file(testing_dataset, "./output/testing-images/testing-image")
write_records_file(training_dataset, "./output/training-images/training-image")
       正確做法是,先在.py指令碼的目錄下,建立/output/testing-images/testing-image和/output/training-images/training-image這兩個目錄(即資料夾),這樣便可正確執行。

         2、size

             write_records_file(dataset, record_location)函式中的
resized_image = tf.image.resize_images(grayscale_image, 250, 151)
       修改為:
resized_image = tf.image.resize_images(grayscale_image, [250, 151])