我已经编写了一个程序来使用 pybrain 训练我的网络。我在训练文件的每一行中有 104 个输入和 7 个输出。我创建了一个长度为 50 的隐藏层。网络是用 .xml 文件编写的。但我不知道如何将最终的权重和偏差写入一个文件,以便我可以计算精度和召回率。有人可以帮忙吗?
from pybrain.datasets import SupervisedDataSet
from pybrain.datasets import ClassificationDataSet
from pybrain.utilities import percentError
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules import SoftmaxLayer
from pybrain.tools.xml.networkwriter import NetworkWriter
from pybrain.tools.xml.networkreader import NetworkReader
ds = SupervisedDataSet(104,7)
tf = open('neural_net_feature.txt','r')
for line in tf.readlines():
data = [float(x) for x in line.strip().split(',') if x != '']
indata = tuple(data[:104])
outdata = tuple(data[104:])
ds.addSample(indata,outdata)
n=buildNetwork(ds.indim,50,ds.outdim,hiddenclass=SigmoidLayer,outclass=SigmoidLayer)
NetworkWriter.writeToFile(n, 'filename.xml')
n = NetworkReader.readFrom('filename.xml')
t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True)
t.trainUntilConvergence(dataset=ds, maxEpochs=None, verbose=False , continueEpochs=10, validationProportion=0.10)
t.testOnData(verbose=True)
谢谢
最佳答案
最后我使用了这个答案[ pybrain: how to print a network (nodes and weights)把它们全部写下来:
i=0
for mod in n.modules:
#n.modules:
#set([<BiasUnit 'bias'>, <LinearLayer 'in'>, <SigmoidLayer 'hidden0'>,
#<SigmoidLayer 'out'>])
for conn in n.connections[mod]:
#n.connections:
#{<BiasUnit 'bias'>: [<FullConnection 'FullConnection-4': 'bias' -> 'out'>,<FullConnection 'FullConnection-5': 'bias' -> 'hidden0'>],
#<LinearLayer 'in'>: [<FullConnection 'FullConnection-6': 'in' -> 'hidden0'>],
#<SigmoidLayer 'hidden0'>: [<FullConnection 'FullConnection-7': 'hidden0' -> 'out'>],
#<SigmoidLayer 'out'>: []}
final_weight.write('\n'+"connection:"+str(conn)+'\n')
final_weight.write('[')
if i<7:
for cc in range(len(conn.params)):
final_weight.write(str(conn.params[cc])+',')
i+=1
if i==7:
final_weight.write('\n')
i=0
final_weight.write(']')
这样我就把权值(不是全部而不是部分)写在了一个列表中,由于权值的数量太多,所以在这个程序中每7个权值写在一行。
关于python-2.7 - 有什么方法可以使用 pybrain 编写最终权重(在所有时期完成后)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788443/