Tensorflow異常集錦


一、tensorflow checkpoint報錯

在調用tf.train.Saver#save時,如果使用的路徑是絕對路徑,那么保存的checkpoint里面用的就是絕對路徑;如果使用的是相對路徑,那么保存的checkpoint里面用的就是相對路徑。正確的方法應該是使用相對路徑進行保存,這樣才能保證較好的可移植性。

如果使用相對路徑,復制到本地之后,會報找不到文件的錯誤。

tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: 
一個絕對路徑...... : ϵͳ\udcd5Ҳ\udcbb\udcb5\udcbdָ\udcb6\udca8\udcb5\udcc4·\udcbe\udcb6\udca1\udca3
; No such process

解決方法:手動修改checkpoint文件,checkpoint文件是一個文本文件。

以上結論可以通過以下代碼進行驗證。

import tensorflow as tf
import os

a = tf.Variable(3)
saver = tf.train.Saver(tf.global_variables(), )
with tf.Session()as sess:
    sess.run(tf.global_variables_initializer())
    saver.save(sess, os.path.abspath('gen/test/'))

二、奇怪的six

編Tensorflow編了好幾個程序了,都是正常運行。
為了記錄每一次調參的結果和對應的代碼,我的python文件命名為one.py,two.py,three.py等。
直到six.py時,報錯了。

    from google.protobuf import descriptor as _descriptor
  File "C:\anaconda\lib\site-packages\google\protobuf\descriptor.py", line 37, in <module>
    import six
  File "C:\Users\weidiao\Desktop\python實驗室\人臉識別卷積神經網絡\six.py", line 24, in <module>
    x = tf.placeholder(tf.float32, [None, IMAGE_SIZE, IMAGE_SIZE, NUM_CHANNELS], name='x-input')
AttributeError: module 'tensorflow' has no attribute 'placeholder'

我還以為程序運行着把tensorflow玩壞了。
其實是因為protobuf這個包中引用了six.py,而我的six.py把正確的six.py給覆蓋了。

看見沒,這就是Python使用不規范包名的后果,在Java中寫了一堆org、com並不白寫,Java中包的定位更精確、更無二義性。再過幾十年,Python中的全部包幾乎好名字都被占了,那時人們再想給Python寫個庫的時候就要哭了。

三、tensorflow報錯:Unsupported feed type

  File "C:\anaconda\lib\site-packages\tensorflow\python\training\monitored_session.py", line 827, in run
    return self._sess.run(*args, **kwargs)
  File "C:\anaconda\lib\site-packages\tensorflow\python\client\session.py", line 889, in run
    run_metadata_ptr)
  File "C:\anaconda\lib\site-packages\tensorflow\python\client\session.py", line 1120, in _run
    feed_dict_tensor, options, run_metadata)
  File "C:\anaconda\lib\site-packages\tensorflow\python\client\session.py", line 1317, in _do_run
    options, run_metadata)
  File "C:\anaconda\lib\site-packages\tensorflow\python\client\session.py", line 1336, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InternalError: Unsupported feed type

使用tf.contrib.learn.DNNClassifier分類器進行分類時,報出如上異常。
解決方法是:盡量使用numpy中的默認類型,如np.int,np.float等,而不要使用np.int32,np.float32.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM