1. 程式人生 > >《21個專案玩轉深度學習》在spyder3.6上跑2.7遇到的問題彙總(更新中...)

《21個專案玩轉深度學習》在spyder3.6上跑2.7遇到的問題彙總(更新中...)

在spyder3.6上跑2.7遇到的問題彙總

------------------------------------------------------

1、NameError: name 'xrange' is not defined

在Python 3中,range()的實現方式與xrange()函式相同,所以就不存在專用的xrange( )

所以,如果直接用xrange的話會報錯

解決:直接將xrange改成range

參考:https://blog.csdn.net/u010412719/article/details/47088095

2、TypeError: 'range' object does not support item assignment

原來的程式是這樣的:

if random is None:
    randbelow = self._randbelow
    for i in reversed(range(1, len(x))):
    # pick an element in x[:i+1] with which to exchange x[i]
        j = randbelow(i+1)
        x[i], x[j] = x[j], x[i]

查了資料發現說是因為:

range() 返回的是“range object”,而不是實際的list 值。

將上面例子的程式碼: a = range(0,N)改為a = list(range(0,N)) 就好啦!

我以為是把for迴圈的那句話改成 for i in reversed(list(range(1,len(x)))):

但是改完還是報相同的錯誤

其實是改成這樣:

if random is None:
    randbelow = self._randbelow
#            for i in reversed(range(1, len(x))):
    x = list(range(1,len(x)))            #添加了這一句
    for i in reversed(range(1,len(x))):
        j = randbelow(i+1)
        x[i], x[j] = x[j], x[i]

之後會報一些xrange的錯誤,參見上一條

再之後會報一個錯誤:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence

我找了一些辦法嘗試解決,目前以失敗告終,...

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

原來的程式是這樣的

# 使用下面的語句將之匯入
model_fn = 'tensorflow_inception_graph.pb'
with tf.gfile.FastGFile(model_fn, 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())

可以通過更改檔案的讀取方式解決

在程式開頭先加上一句import:

import codecs

然後把with那句改成這樣:

with codecs.open(model_fn,'r','gbk',errors='ignore')as f: