首页 > 解决方案 > 使用 Keras 检索 ANN 输出层的线性叠加值存在问题

问题描述

我已经训练了一个 ANN,它有 2 个隐藏层(500,500)和一个带有一个节点的输出层。代码如下所示:

def nn_repete_body(dim=npos,loss=err,in_layer_dim=2,dropout=0.1,optimizer=opt,activation=act,add_layer=[500,500],initialize=init):
    model = Sequential()

    for i in add_layer:
        model.add(Dense(i,activation=act,kernel_initializer=initialize))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss=loss, optimizer=optimizer,metrics=['accuracy'])
    return model

seed = 7
np.random.seed(seed)

classifier = KerasClassifier(build_fn = nn_repete_body)

params = {'batch_size' : [100,200,300,400,500],
          'epochs' : [100,200,300,400,500],
          'optimizer' : ['adam'], 'initialize' : ['normal']}

grid_search = GridSearchCV(estimator = classifier,
                           param_grid = params,
                           scoring = 'neg_mean_squared_error',
                           cv = 10)

grid_search=grid_search.fit(x_train,y_train)
print("Best: %f using %s" % (grid_search.best_score_, grid_search.best_params_))

best_parameters = grid_search.best_params_
best_accuracy = grid_search.best_score_
means = grid_search.cv_results_['mean_test_score']
stds = grid_search.cv_results_['std_test_score']
params = grid_search.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
        print("%f (%f) with: %r" % (mean, stdev, param))

print("Fitting the model with optimum batch size and epochs")
model=nn_repete_body(dim=npos,loss=err,in_layer_dim=2,dropout=0.1,optimizer=opt,activation=act,add_layer=[500,500],initialize=init)
histrory=model.fit(x_train, y_train,
          batch_size=best_parameters['batch_size'],
          epochs=best_parameters['epochs'], validation_data=(x_test,y_test))
print('Saving the model')
model.save('committor-NN.h5')

dpred=pd.read_csv('principal_components_FTPs.csv',names=name[:2],delimiter=r"\s+")

xpred=dpred

y_predict=model.predict(xpred)

现在,在预测的情况下,输出由 [sigmoid(sum(w x+b))] 给出。但是,我想在输出层检索 sum(w x+b) 的值。我怎样才能做到这一点?

标签: pythontensorflowkerasdeep-learningneural-network

解决方案


推荐阅读