Valgrind documentation on debugging custom memory allocators基于一个叫做"池的抽象。"我在弄清楚如何使用游泳池方面遇到了一些麻烦。我最初的猜测是,因为我有一个相当简单的内存分配器(标记和清除垃圾收集器),我只能使用一个"池。"也许如果我有多个实体以不同的方式管理不同的内存,我会使用多个"池"?
我喜欢任何关于您如何使用游泳池的指导,或者您在应用程序中如何使用游泳池。
答案 0 :(得分:1)
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
import numpy
#Function to create model, required for KerasClassifier
def create_model():
classifier = Sequential()
classifier.add(Dense(12, input_dim=8, activation='relu'))
classifier.add(Dense(8, activation='relu'))
classifier.add(Dense(1, activation='sigmoid'))
classifier.compile(optimizer = 'adam',loss="mean_squared_error")
return model
seed = 7
numpy.random.seed(seed)
model = KerasClassifier(build_fn=create_model, epochs=100, batch_size=32, verbose=0)
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(model, X_train, y_train, cv=kfold)
print(results.mean())
。这使valgrind能够一次处理多个池。我们也可以直接销毁池,valgrind将自动释放它中的对象,然后当我们创建一个新的池时,valgrind知道新的对象不会重叠以前的对象,防止错误。
这是我的代码:https://github.com/eclipse/omr/pull/1311。 还有一个文档链接,其中包含我理解和使用api的方式。