是由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语句来处理各种激活功能。
如果用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
。