load_model_pickle
方法是 gempy.core.model.Project
类中的一个方法。它的作用是在从一个pickle文件中加载已经保存好的模型。
Project.load_model_pickle(pickle_path: str, kwargs_pickle=None)
pickle_path
(str):pickle文件的路径和名称。kwargs_pickle
(str):存储在pickle文件中的参数。无。
在Gempy中使用pickle文件保存已经训练好的模型是一种常用的方法,可以避免反复的训练过程。下面展示了如何使用 load_model_pickle
方法加载pickle文件。
import gempy as gp
import pandas as pd
import numpy as np
# 数据输入
geo_data = pd.read_csv('https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/data/input_data/tut_ch1_data.csv')
interp_data = pd.read_csv('https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/data/input_data/tut_ch1_interp_data.csv')
orientations = pd.read_csv('https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/data/input_data/tut_ch2_orientations.csv')
orientations = orientations.iloc[:, :4]
o_idx = np.sort(np.random.choice(orientations.index, size=40, replace=False))
orientations = orientations.loc[o_idx, :]
# 创建模型
geo_model = gp.create_model('tutorial_ch3')
# 设置数据
gp.init_data(geo_model, [0, 2000., 0, 2000., 0, 1000.], [50, 50, 50],
default_values=[2.5, 2.5, 2.5], output='geology', dtype=np.float64)
# 添加地层
gp.map_series_to_surfaces(geo_model, {'Strat_Series': ['rock2', 'rock1'], 'Basement_Series': 'basement'})
# 设置界面
gp.set_solutions(geo_model, {'Strat_Series': None, 'Basement_Series': 'basement'}, overwrite=True)
# 创建中介模型
gp.set_interpolator(geo_model,
compile_theano=True,
theano_optimizer='fast_compile',
verbose=[])
# 添加方向
gp.set_geophysics_obj(geo_model,
orientations.iloc[:, :-1],
is_orientations=True,
orient_axis=0,
use_selection=True,
**{'feature_name': ['orientation']})
# 进行插值计算
gp.compute_model(geo_model, compute_mesh=True)
# 保存模型
geo_model.to_pickle('tutorial_ch3.pickle')
# 加载模型
geo_model_loaded = gp.load_model_pickle('tutorial_ch3.pickle')
# 确认结果
assert geo_model_loaded.data.model_name == geo_model.data.model_name
assert geo_model_loaded.solutions.keys() == geo_model.solutions.keys()
assert geo_model_loaded.interpolator._compiled_interp_function != geo_model.interpolator._compiled_interp_function