web-dev-qa-db-ja.com

PyBrainトレーニングを保存して回復する方法は?

スクリプトを実行するたびに再トレーニングする必要がないように、トレーニング済みのニューラルネットワークをPyBrainに保存して復元する方法はありますか?

33
solartic

PyBrainのニューラルネットワークは、Pythonに組み込まれているpickle/cPickleモジュールを使用するか、PyBrainのXMLNetworkWriterを使用して保存およびロードできます。

# Using pickle

from pybrain.tools.shortcuts import buildNetwork
import pickle

net = buildNetwork(2,4,1)

fileObject = open('filename', 'w')

pickle.dump(net, fileObject)

fileObject.close()

fileObject = open('filename','r')
net = pickle.load(fileObject)

CPickleはCで実装されているため、pickleよりもはるかに高速である必要があります。使用法はほとんどpickleと同じである必要があるため、代わりにcPickleをインポートして使用してください。

# Using NetworkWriter

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml.networkwriter import NetworkWriter
from pybrain.tools.customxml.networkreader import NetworkReader

net = buildNetwork(2,4,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml') 
45
solartic

NetworkWriterNetworkReaderはうまく機能します。 pickleを介して保存およびロードすると、トレーニング関数を介してネットワークを変更できなくなったことに気付きました。したがって、NetworkWriter-メソッドを使用することをお勧めします。

11
Jorg

NetworkWriterは行く方法です。 Pickleを使用すると、Jorgが言うようにネットワークを再トレーニングすることはできません。

あなたはこのようなものが必要です:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml import NetworkWriter
from pybrain.tools.customxml import NetworkReader

net = buildNetwork(4,6,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml')
2