1. 程式人生 > >Tensorflow 填坑日記

Tensorflow 填坑日記

坑一、UnicodeEncodeError: 'utf-8' codec can't encode character '\udcce' in position 1936: surrogates not a

這個坑搞了我很久,開始以為是python的版本問題 然後一路pint命令下去 發現是label_map_util.py這邊的

with tf.gfile.FastGFile(path, 'r') as fid:  

label_map_string = fid.read()

出了問題 我單獨抽出來

於是自己寫了一段

import matplotlib.pyplot as plt;  
import tensorflow as tf;  
  
image_raw_data_jpg = tf.gfile.FastGFile('D:\我的圖片s\1.jpg', 'rb').read()  
  
with tf.Session() as sess:  
    img_data_jpg = tf.image.decode_jpeg(image_raw_data_jpg) #解碼  
    img_data_jpg = tf.image.convert_image_dtype(img_data_jpg, dtype=tf.uint8)  
    encode_image_jpg = tf.image.encode_jpeg(img_data_jpg) #jpg編碼  
    encode_image_png = tf.image.encode_png(img_data_jpg)#png編碼  
  
    with tf.gfile.GFile('output.jpg', 'wb') as f:  
        f.write(encode_image_jpg.eval())  
  
  
    with tf.gfile.GFile('output.png', 'wb') as f:  
        f.write(encode_image_png.eval())  

發現還是

UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 1942: surrogates not allowed

於是 我發現路徑我打多了一個s

D:\我的圖片s\1.jpg

於是我猜測是路徑不對引起的讀取錯誤

於是我

直接寫

# In[ ]:
label_map = label_map_util.load_labelmap("D:\\models-master\\research\\object_detection\\data\\mscoco_label_map.pbtxt")
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
category_index = label_map_util.create_category_index(categories)

好了 執行通過 

問題:路徑不對造成的讀取錯誤

坑二、windows安裝TensorFlow gpu版本時候的bug;No module named "_pywrap_tensorflow" ;DLL load failed.

因為重灌系統了,所以重新安裝了tensorflow,發現,在python 3.5環境下直接pip install tensorflow,最後測試import tensorflow;時候報錯

  1. import tensorflow as tf  
  2. Traceback (most recent call last):  
  3.   File "D:\Program Files\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_import_helper  
  4.     return importlib.import_module(mname)  
  5.   File "D:\Program Files\Python35\lib\importlib\__init__.py", line 126, in import_module  
  6.     return _bootstrap._gcd_import(name[level:], package, level)  
  7.   File "<frozen importlib._bootstrap>", line 986, in _gcd_import  
  8.   File "<frozen importlib._bootstrap>", line 969, in _find_and_load  
  9.   File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked  
  10.   File "<frozen importlib._bootstrap>", line 666, in _load_unlocked  
  11.   File "<frozen importlib._bootstrap>", line 577, in module_from_spec  
  12.   File "<frozen importlib._bootstrap_external>", line 906, in create_module  
  13.   File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed  
  14. ImportError: DLL load failed: 找不到指定的模組。  
  15. During handling of the above exception, another exception occurred:  
  16. Traceback (most recent call last):  
  17.   File "D:\Program Files\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 41, in <module>  
  18.     from tensorflow.python.pywrap_tensorflow_internal import *  
  19.   File "D:\Program Files\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 21, in <module>  
  20.     _pywrap_tensorflow_internal = swig_import_helper()  
  21.   File "D:\Program Files\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 20, in swig_import_helper  
  22.     return importlib.import_module('_pywrap_tensorflow_internal')  
  23.   File "D:\Program Files\Python35\lib\importlib\__init__.py", line 126, in import_module  
  24.     return _bootstrap._gcd_import(name[level:], package, level)  
  25. ImportError: No module named '_pywrap_tensorflow_internal'  

在網上看到一篇文章,解除安裝掉安裝的tensorflow,重灌tensorflow後解決了,不過不是pip install tensorflow,命令是:

pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0rc0-cp35-cp35m-win_amd64.whl 

這裡有點插曲,出現

  1. ImportError: No module named '_pywrap_tensorflow_internal'  這個錯誤的問題呢是安裝tensorflow的版本問題,直接打pip install tensorflow
  2. 是安裝到了最新版本,而我的models-master是1.5版本的 所以執行odel_builder_test.py就上面那個錯 
  3. 安裝回對應的1.5版本命令
  4. pip install tensorflow==1.5.0

坑三、在用generate_tfrecord.py製作record資料集的時候報TypeError: None has type NoneType, but expected one of: int, long

我把日誌打印出來的時候發現是在ship434的時候報錯  去找了一下這個xml檔案 開啟看 發現

在框第二個的時候命名錯誤了不是Ship,是手誤造成的,改回來還要重新生成資料集CSV資料

坑四、win7+tensorflow1.7+python3.5出現

ImportError: No module named '_pywrap_tensorflow_internal' 

 這個問題好狗血。win7+tensorflow1.5+python3.5是沒有問題但裝上了tensorflow1.7就出現一下這個問題

把百度的方法試了遍 外掛裝了好幾個,vs2015都裝了都不行。看到外國一篇文章說是cpu不支援什麼A來著(沒記住這個單詞)

哎呀,放棄了裝這個1.7版本的 用回tensorflow1.5

坑五、GPU佔用,無法使用eval.py評估模型。

原因是:如果你沒有在訓練的時候把檔案trainer.py檔案裡新增一下程式碼

    #session_config.gpu_options.per_process_gpu_memory_fraction = 0.5#設定視訊記憶體為50%

tensorflow預設佔用全部的視訊記憶體空間 ,這下如果你想eval.py評估模型會報錯。視訊記憶體已經佔滿

坑六、出現OOM錯誤解決方法

1、bath_size設定太大,tensorflow預設是24,如果設定到15左右還是oom,可能是你的圖片尺寸太大,造成的OOM。(個人理解)

2、視訊記憶體已經被佔滿,出現oom

坑七、 tensorBord的預測結果和實際轉換pb模型出來的結果不一致問題

最近遇到一個大坑,我用tensorflow==1.7訓練模型 在tensorbord裡面結果是很好的,但匯出後用同樣的圖片結果居然和原來的預測的不一樣???  這個問題搞了我很久,後來遇到一位大神指點,是1.7更新了eval裡面的程式碼,而我的inference程式碼是網上找的,沒有和最新的inference一致,這裡我用1.7的object_detection_tutorial.ipynb測試出來的結果和預測的結果一樣,但匯出的pb模型和預測的完全不一樣。

坑八、不同格式的匯入圖片格式、預測結果不一樣。。

 用 python中Image.open和cv2.imread匯入的影象格式同一張圖片居然結果不一樣。。。這裡用cv2.imread匯入的圖片需要轉格式,搬運程式碼如下:

PIL.Image轉換成OpenCV格式:

[python] view plain copy
 
import cv2  
from PIL import Image  
import numpy  
  
image = Image.open("plane.jpg")  
image.show()  
img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)  
cv2.imshow("OpenCV",img)  
cv2.waitKey()  


OpenCV轉換成PIL.Image格式:

[python] view plain copy
 
import cv2  
from PIL import Image  
import numpy  
  
img = cv2.imread("plane.jpg")  
cv2.imshow("OpenCV",img)  
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))  
image.show()  
cv2.waitKey()  

-------------------------------------------------未完待續----------------------------------------------------------------------------------------

相關推薦

Tensorflow 日記

坑一、UnicodeEncodeError: 'utf-8' codec can't encode character '\udcce' in position 1936: surrogates not a 這個坑搞了我很久,開始以為是python的版本問題 然後一路pin

前端系列——jquery前端國際化解決方案“日記

attr 描述 可讀性強 日期 方案 csdn .net 維護 use 前言:最近,新的平臺還沒有開發完成,原來的老項目又提出了新的需求:系統國際化。如果是前後端完全分離的開發模式,要做國際化,真的太簡單了,有現成的解決方案,基於Node構建的時下熱門的任何一種技術選型都

前端系列——jquery.i18n.properties前端國際化解決方案“日記

i18n amp 國際化 php jquery hub com 解決方案 pro http://pic.cnhubei.com/space.php?uid=1774&do=album&id=1437874http://pic.cnhubei.com/spac

三、VueJs 日記之項目文件認識

統一 技術分享 module 依賴 工作 情況下 png package bpa 上一篇博文,我們搭建了一套基礎的vuejs的環境,首先安裝node.js,然後利用npm包管理器,安裝vue-cli,設置淘寶鏡像,初始化項目,安裝依賴,運行。在這一篇,我們將認識vuejs項

十一、VueJs 日記之使用Amaze ui調整列表和內容頁面

port article lap idt body 設置 eight get nod 上一篇博文我們整合了Amaze ui,並且調整了一個頭部header和底部footer文件,其實做起來也很簡單,只要按照步驟來做,完全沒有問題。今天我們來重新調整一下列表頁面和內容頁面,使

win10安裝TensorFlow筆記

研究了一段人工智慧的基礎理論以後,終於決定安裝一套TensorFlow來練練手。鄭重其事的將一臺電腦重灌了win10,網上找了幾個安裝攻略,照著安裝TensorFlow For windows。結果就踩到了幾個大坑。很多安裝攻略只告訴你怎麼做,沒告訴你為啥這麼做,所以

AI相關 TensorFlow -卷積神經網絡 踩日記之一

一個 模糊 結果 隊列 二維 圖片路徑 降維 支持 日記 上次寫完粗淺的BP算法 介紹 本來應該繼續把 卷積神經網絡算法寫一下的 但是最近一直在踩 TensorFlow的坑。所以就先跳過算法介紹直接來應用場景,原諒我吧。 TensorFlow 介紹 TF是google

環境配置(近期實測)——Ubuntu16.04+CUDA9.0+tensorflow-gpu

u盤 earch 實測 win 1.3 ted 等待 gef kernel 近幾年深度學習在物體檢測方面出現了許多基於不同框架的網絡模型,不同模型需要不同的版本的Python、TensorFlow、Keras、CUDA、cuDNN以及操作系統。不得不說,要把經典物體檢測網絡

聯想拯救者(r720)安裝Ubuntu16.04及過程+cuda+cudnn+opencv+tensorflow+caffe安裝及pip,git網速慢問題

U盤安裝Ubuntu16.04LTS: 2)在磁碟管理器中壓縮出給ubuntu的空閒空間,確保該空間為未分配。我的筆記本是128gSSD+1tHDD,win10作為主系統放在SSD中,ubuntu裝在HDD中,其中對HDD壓縮了100G空間。 4)重啟電腦,按F2

支付開發記之微信支付

wiki index 傳輸 系統 外網 ttr throw div union 微信支付,支持的支付方式比較多:有掃碼支付,刷卡支付,APP支付和公眾號支付。其中,APP和網站上最常用的就是APP支付和公眾號支付。前者集成在APP中,後者主要是為微信用戶提供了另一種支付方式

【python】python魔法方法(待)

絕對值 tle init cls -m del __init__ 另一個 trunc 參考博文:http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 參考博文英文原版:http://www

在 Windows 上測試 Redis Cluster的集群筆記

san hat aix gdb ima erl omx ngs isa %E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%80%9D%E7%BB%B4%E9%80%BB%E8%BE%91%2010%20-%2

SpringBoot系列---XML方式配置數據庫

... eno aging width 1.2 tom group urn epo 本次只是簡單的運用SpringBoot搭建框架,對其原理並不做深入的探究 1.POM文件 1 <?xml version="1.0" encoding="UTF-8"?>

http知識

經典 用戶 urg 響應 listen 第一次 ip地址 reset 經典的 當我們輸入網址回車或者刷新頁面時,瀏覽器和計算機做了什麽事呢? 首先就是域名解析,1.瀏覽器先搜索自身的DNS緩存 2.若瀏覽器沒有找到緩存或者緩存已經失效,那麽計算機搜索自身的DNS緩存 3.讀

freeswitch安裝配置的各種

ovf 配置 tar ldo 安裝 blank jms lan ive chronometer%E8%83%BD%E6%98%BE%E7%A4%BA%E6%AF%AB%E7%A7%92%E5%90%97 ?????? http://music.baidu.com/son

UiAutomator2.0升級

新建 意思 原來 也有 sha ogl selector 輸入文字 apk UiAutomator2.0升級填坑記 SkySeraph May. 28th 2017 Email:[email protected]/* */ 更多精彩請直接訪問SkyS

對於盒模型的寬高獲取

裏的 ack element 一段 rip 為什麽 getc 局限性 tro 最近,在做一個項目的時候,要獲取一個盒模型的寬度,那麽當時想到的方法就是el.style.width.我們先看一段代碼。 1 <!DOCTYPE html> 2

[]樹上差分 例題:[JLOI2014]松鼠的新家(LCA)

sca esp name tmp mes font efi 同學 節點 今天算是把LCA這個坑填上了一點點,又復習(其實是預習)了一下樹上差分。其實普通的差分我還是會的,樹上的嘛,也是懂原理的就是沒怎麽打過。 我們先來把樹上差分能做到的看一下: 1.找所有路徑公共覆蓋的

微信JSSDK分享--挖坑之小結

file com 附錄 success 成功 文檔 -i 是把 n)   最近參與微信服務號小項目的開發,關於微信分享,我是只知其功能,並沒深入了解其中的彎彎道道。雖然項目中不是我負責微信分享這一塊(因為我也不太會),但是團隊在這個功能上,那可是說多了都是淚,耗費了超級多的

Cython的用法以及姿勢

visual 總結 字節 als 文本編輯器 ref 進入 類型 code 因為項目需要,需要優化已有的Python代碼。目前Python代碼的執行過程是將Python代碼轉變成一行行指令,然後解釋器解釋指令的執行,調用到C代碼層。如果去掉指令解釋這個階段,直接進入C代碼層