Keras モデルのハイパーパラメータを最適化するためにスペアミントを使用している場合、初めて正常に動作します。ただし、2 番目以降のジョブでは、常に次のエラーがスローされます。
<type 'exceptions.TypeError'>, TypeError('An update must have the same type as the original shared variable (shared_var=<TensorType(float32, matrix)>, shared_var.type=TensorType(float32, matrix), update_val=Elemwise{add,no_inplace}.0, update_val.type=TensorType(float64, matrix)).', 'If the difference is related to the broadcast pattern, you can call the tensor.unbroadcast(var, axis_to_unbroadcast[, ...]) function to remove broadcastable dimensions.'), <traceback object at 0x18a5c5710>)
次のコードを使用して、トレーニング データとテスト データの事前に作成された numpy 配列をロードしています。次のパラメーターは、最適化 Python スクリプトによって渡されます。ただし、スペアミントなしで実行すると、パラメーターのセットは正常に機能します。
def load_train_data(arg_type, params=None):
X_train1 = pickle.load(open(arg_type+"_train1","rb"))
X_train2 = pickle.load(open(arg_type+"_train2","rb"))
Y_train = pickle.load(open(arg_type+"_train_labels","rb"))
model=combined_model(X_train1,X_train2,Y_train,params)
X_test1 = pickle.load(open(arg_type+"_test1","rb"))
X_test2 = pickle.load(open(arg_type+"_test2","rb"))
Y_test = pickle.load(open(arg_type+"_test_labels","rb"))
loss = model.evaluate({'input1': X_test1,'input2': X_test2,'output':Y_test},batch_size=450)
return loss