OK, I've figured how to do it. One note that Keras docs say I need to do model.compile() after loading, but it seems to work fine without it (I've compared results with and without it), perhaps because I do model.compile() after the model definition.
model = Sequential()
# rest of model definition goes here...
model.compile(loss='mse', optimizer=opt)
checkpointer = ModelCheckpoint(filepath="weights.hdf5", verbose=1, save_best_only=True)
hist = model.fit(X_train_mat, Y_train_mat, nb_epoch=e, batch_size=b, validation_split=0.1, callbacks=[checkpointer])
model.load_weights('weights.hdf5')
predicted = model.predict(X_test_mat)