如何从保存的模型.h5访问激活功能?

问题描述 投票:0回答:1

是由model.save()生成的.h5文件中存储的每个层的激活函数吗?还是已经“融入”重量了?

我正在编写一个AWS Lambda函数,以每五分钟从多个回归模型生成时间序列预测。不幸的是,TensorFlow的库太大,无法加载到AWS Lambda函数中,因此我正在编写自己的Python代码以加载保存的.h5模型文件并根据权重和输入数据生成预测。这是我到目前为止的位置:

def generate_predictions(model_path, df):
    model_info = h5py.File(model_path, 'r')
    model_weights = model_info['model_weights']
    # Initialize predictions matrix with preprocessed inputs
    predictions = preprocessing.scale(df[inputs])
    layer_list = list(model_weights.keys())
    for layer in layer_list:
        weights = model_weights[layer][layer]['kernel:0'][:]
        bias = model_weights[layer][layer]['bias:0'][:]
        predictions = predictions.dot(weights)
        predictions += bias
        # How to retrieve activation function for layer?
        # predictions = activation_function(predictions)

    return predictions

我知道我可能想要某种case / switch语句来处理各种激活功能。

python tensorflow keras h5py
1个回答
0
投票

如果用model.save保存完整模型,则可以访问每个层及其激活功能。

from tensorflow.keras.models import load_model
model = load_model('model.h5')

for l in model.layers:
  try:
    print(l.activation)
  except: # some layers don't have any activation
    pass
<function tanh at 0x7fa513b4a8c8>
<function softmax at 0x7fa513b4a510>

例如,在最后一层中使用softmax

© www.soinside.com 2019 - 2024. All rights reserved.