【发布时间】:2017-12-07 20:09:02
【问题描述】:
我正在尝试结合 Keras 和 Joblib 以生成多个简单模型并将它们存储在一个数组中,以便我可以在验证阶段之后投影探针样本。
我有一个 Bootstrap Aggregating (Bagging) 方法的实现,其中包含几个使用 Joblib 的简单二元神经网络模型。但是,我在尝试预测时遇到了以下错误:
Traceback (most recent call last):
File "../HFCN_openset_load.py", line 264, in <module>
main()
File "../HFCN_openset_load.py", line 107, in main
pr, roc = fcnhface(args, parallel_pool)
File "../HFCN_openset_load.py", line 194, in fcnhface
pred = models[k][0].predict(feature_vector.reshape(1, feature_vector.shape[0]))
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 1004, in predict
if not self.built:
File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 339, in built
return self._built
AttributeError: 'Sequential' object has no attribute '_built'
您会在下面找到我认为可能出现错误的部分代码:
def getModel(input_shape,nclasses=2):
make_keras_picklable()
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=input_shape))
model.add(Dropout(0.2))
model.add(Dense(nclasses, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])#RMSprop()
return model
def learn_fc_model(X, Y, split):
boolean_label = [(split[key]+1)/2 for key in Y]
y_train = np_utils.to_categorical(boolean_label, 2)
model = getModel(input_shape=X[0].shape)
model.fit(X, y_train, batch_size=40, nb_epoch=100, verbose=0)
return (model, split)
#Training using Joblib, models is a list of tuples (ANN models, any variable)
with Parallel(n_jobs=4, verbose=15, backend='multiprocessing') as parallel_pool:
models = parallel_pool(
delayed(learn_fc_model) (numpy_x, numpy_y, split) for split in numpy_s
)
#Testing
for k in range (0, len(models)):
pred = models[k][0].predict(feature_vector.reshape(1, feature_vector.shape[0]))
完整文件的链接是正确的here
【问题讨论】:
标签: python serialization keras pickle joblib