facturas - ¿Cómo guardar y recuperar el entrenamiento de PyBrain?
sat web service (3)
¿Hay alguna manera de guardar y recuperar una red neuronal entrenada en PyBrain, para que no tenga que volver a entrenarme cada vez que ejecuto el script?
El NetworkWriter
y el NetworkReader
funcionan muy bien. Noté que al guardar y cargar a través de pickle
, la red ya no se puede cambiar a través de las funciones de entrenamiento. Por lo tanto, recomendaría usar el NetworkWriter
-method.
Las redes neuronales de PyBrain pueden guardarse y cargarse utilizando el módulo pickle / cPickle integrado de python, o utilizando el XML NetworkWriter de PyBrain.
# 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)
Nota cPickle se implementa en C, y por lo tanto debe ser mucho más rápido que pickle. El uso debe ser, en su mayoría, igual que el pickle, así que solo importa y usa 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'')
NetworkWriter es el camino a seguir. Usando Pickle no puedes entrenar a la red como dice Jorg.
Necesitas algo como esto:
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'')