TensorFlowフレームワークの下でDBNネットワークを実現
6574 ワード
前置き前のブログ『Windowsの下にTensorflowをインストール』に基づき、深さ学習ネットワークであるDBNネットワークを実現し、古典的な手書きフォント認識を例に挙げます.
一、手書きフォントデータセットをダウンロードし、公式サイトは以下の通りである.http://yann.lecun.com/exdb/mnist/ダウンロード:
原作者が実現する過程:https://gist.github.com/myme5261314/005ceac0483fc5a581cc
注意:ブロガーが選択したpythonエディタはpycharmエディタで、windowsの下にtensorflowをインストールした後、pycharmでパスを構成する必要があります.具体的な参考:http://blog.csdn.net/wx7788250/article/details/60877166
三、githubでダウンロードしたコードをpycharmにインポートすると、いくつかのエラーが発生します.以下、一つ一つ修正します.問題1:公式PIL(python image library)は現在python 2.7以下のバージョンしかサポートされていません.だから、コードをインポートすると、
を選択して設定できます.ここにPillow is a replacement for PIL,the Python Image Library,which provides image processing functionality and supports many file formatsがあります.Use
問題2:バージョンの問題でpython 3.Xではprintの出力に「()」を付けるので、修正後の様子は:
問題3:上記の問題を修正した後、エラーがないように見えますが、コードrbm_を実行します.MNIST_test.pyは依然として問題があることを発見し、問題の説明は以下の通りである.
変更方法:input_data.pyでコードを見つけます
次のように変更します.
末尾に[0]を付けて再運転し、問題が解決します.この問題は新しいバージョンのNumpyが存在するようで、最近の更新では、単一の要素配列をスカラーとしてインデックス化しています.
四、運行結果注:具体的なコードに基づいて、出力結果は10000回ごとに精度を出力し、合計60000回反復し、同時に10000回ごとに識別結果のimageを出力し、rbm_と命名する.x.png.ここで最初の識別結果と最後の識別結果を貼り付けた図は以下の通りである: rbm_0 rbm_5
一、手書きフォントデータセットをダウンロードし、公式サイトは以下の通りである.http://yann.lecun.com/exdb/mnist/ダウンロード:
train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
二、github上のDBNを参照してソースコードを実現する:https://github.com/myme5261314/dbn_tf 原作者が実現する過程:https://gist.github.com/myme5261314/005ceac0483fc5a581cc
注意:ブロガーが選択したpythonエディタはpycharmエディタで、windowsの下にtensorflowをインストールした後、pycharmでパスを構成する必要があります.具体的な参考:http://blog.csdn.net/wx7788250/article/details/60877166
三、githubでダウンロードしたコードをpycharmにインポートすると、いくつかのエラーが発生します.以下、一つ一つ修正します.問題1:公式PIL(python image library)は現在python 2.7以下のバージョンしかサポートされていません.だから、コードをインポートすると、
ImportError: No module named 'Image'
、つまりimportがimageというライブラリにないことを提示します.解決方法:非公式ライブラリをダウンロードするにはhttp://www.lfd.uci.edu/~gohlke/pythonlibs/このウェブサイトには64ビットシステムをサポートするPILファイルが提供されている.ウェブサイトにはPillowと呼ばれ、ダウンロードされている.whlの最後のファイル、これは実はpythonが使用する圧縮ファイルで、接尾辞名をzipに変更して、開くことができます.これはpipで取り付ける必要があり、cmdの下で、この.whlダウンロードフォルダ、入力pip install Pillow‑4.1.1‑cp35‑cp35m‑win_amd64.whl
を選択して設定できます.ここにPillow is a replacement for PIL,the Python Image Library,which provides image processing functionality and supports many file formatsがあります.Use
from PIL import Image
instead of import Image
. つまり、「import Image」の代わりに「from PIL import Image」、つまりインポートしたプログラムコードのimport Imageをfrom PIL import Imageに変更すればよいということです.from PIL import Image
問題2:バージョンの問題でpython 3.Xではprintの出力に「()」を付けるので、修正後の様子は:
print (sess.run(
err_sum, feed_dict={X: trX, rbm_w: n_w, rbm_vb: n_vb, rbm_hb: n_hb}))
問題3:上記の問題を修正した後、エラーがないように見えますが、コードrbm_を実行します.MNIST_test.pyは依然として問題があることを発見し、問題の説明は以下の通りである.
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe D:/hlDL/tensorflow-DBN/dbn_tf-master/rbm_MNIST_test.py
Traceback (most recent call last):
File "D:/hlDL/tensorflow-DBN/dbn_tf-master/rbm_MNIST_test.py", line 16, in <module>
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
Extracting MNIST_data/train-images-idx3-ubyte.gz
File "D:\hlDL\tensorflow-DBN\dbn_tf-master\input_data.py", line 150, in read_data_sets
train_images = extract_images(local_file)
File "D:\hlDL\tensorflow-DBN\dbn_tf-master\input_data.py", line 39, in extract_images
buf = bytestream.read(rows * cols * num_images)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\gzip.py", line 274, in read
return self._buffer.read(size)
TypeError: only integer scalar arrays can be converted to a scalar index
変更方法:input_data.pyでコードを見つけます
def _read32(bytestream):
dt = numpy.dtype(numpy.uint32).newbyteorder('>')
return numpy.frombuffer(bytestream.read(4), dtype=dt)
次のように変更します.
def _read32(bytestream):
dt = numpy.dtype(numpy.uint32).newbyteorder('>')
return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]
末尾に[0]を付けて再運転し、問題が解決します.この問題は新しいバージョンのNumpyが存在するようで、最近の更新では、単一の要素配列をスカラーとしてインデックス化しています.
四、運行結果注:具体的なコードに基づいて、出力結果は10000回ごとに精度を出力し、合計60000回反復し、同時に10000回ごとに識別結果のimageを出力し、rbm_と命名する.x.png.ここで最初の識別結果と最後の識別結果を貼り付けた図は以下の通りである: rbm_0 rbm_5