如何保存神经网络的权重

我在将训练好的神经网络的权重保存到文本文件时遇到了问题。以下是我的代码

def nNetwork(trainingData,filename):    lamda = 1    input_layer = 1200    output_layer = 10    hidden_layer = 25    X=trainingData[0]    y=trainingData[1]    theta1 = randInitializeWeights(1200,25)    theta2 = randInitializeWeights(25,10)    m,n = np.shape(X)    yk = recodeLabel(y,output_layer)    theta = np.r_[theta1.T.flatten(), theta2.T.flatten()]    X_bias = np.r_[np.ones((1,X.shape[0])), X.T]    #共轭梯度算法    result = scipy.optimize.fmin_cg(computeCost,fprime=computeGradient,x0=theta,args=(input_layer,hidden_layer,output_layer,X,y,lamda,yk,X_bias),maxiter=100,disp=True,full_output=True )    print result[1]  #最小值    theta1,theta2 = paramUnroll(result[0],input_layer,hidden_layer,output_layer)    counter = 0    for i in range(m):        prediction = predict(X[i],theta1,theta2)        actual = y[i]        if(prediction == actual):            counter+=1    print  str(counter *100/m) + '% 准确率'    data = {"Theta1":[theta1],            "Theta2":[theta2]}    op=open(filename,'w')    json.dump(data,op)    op.close()

def paramUnroll(params,input_layer,hidden_layer,labels):    theta1_elems = (input_layer+1)*hidden_layer    theta1_size = (input_layer+1,hidden_layer)    theta2_size = (hidden_layer+1,labels)    theta1 = params[:theta1_elems].T.reshape(theta1_size).T    theta2 = params[theta1_elems:].T.reshape(theta2_size).T    return theta1, theta2

我遇到了以下错误 raise TypeError(repr(o) + ” is not JSON serializable”)

请提供解决方案或其他保存权重的方法,以便我可以在其他代码中轻松加载它们。


回答:

保存numpy数组到纯文本文件的最简单方法是执行 numpy.savetxt(并使用 numpy.loadtxt 加载)。然而,如果你想使用JSON格式保存,可以使用 StringIO 实例来写入文件:

with StringIO as theta1IO:    numpy.savetxt(theta1IO, theta1)    data = {"theta1": theta1IO.getvalue() }    # 像往常一样以JSON格式写入

你也可以对其他参数使用相同的方法。

要检索数据,你可以这样做:

# 从JSON读取数据with StringIO as theta1IO:    theta1IO.write(data['theta1'])    theta1 = numpy.loadtxt(theta1IO)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注