gpt4 book ai didi

python - 在估计器 model_fn 中使用 keras 模型 API 时出现无效参数错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:30 24 4
gpt4 key购买 nike

model_fn对于我构建的自定义估计器,如下所示,

def _model_fn(features, labels, mode):
"""
Mask RCNN Model function
"""
self.keras_model = self.build_graph(mode, config)

outputs = self.keras_model(features) # ERROR STATEMENT
# outputs = self.keras_model(list(features.values())) # Same ERROR with this statement

# Predictions
if mode == tf.estimator.ModeKeys.PREDICT:
... # Defining Prediction Spec

# Training
if mode == tf.estimator.ModeKeys.TRAIN:
# Defining Loss and Training Spec
...

# Evaluation
...

_model_fn()接收参数 featureslabels来自tf.data形式:

features = {
'a' : (batch_size, h, w, 3) # dtype: float
'b' : (batch_size, n) # # dtype: float
}
# And
labels = []

self.keras_model使用 tensorflow.keras.models.Model 构建 具有名称 tensorflow.keras.layers.Input() 的输入占位符(使用层 'a' 定义)的 API和'b'对于各自的形状。

使用 train_and_evaluate() 运行估算器后_model_fn运行良好。该图已初始化,但当训练开始时我面临以下问题:

tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'a' with dtype float and shape [?,128,128,3] [[{{node a}}]]

我以前曾使用过自定义估算器,这是第一次使用 tensorflow.keras.models.Model _model_fn 内的 API计算图表。

最佳答案

此问题仅出现在特定模型 (Mask-RCNN) 中。为了解决这个问题,可以在方法 self.build_graph(mode, config) 中进行一些细微的修改,如下所示:

def build_graph(mode, config):
# For Input placeholder definition
a = KL.Input(tensor=features['a'])
# Earlier
# a = KL.Input(shape=[batch_size, h, w, 3], name='a')

b = KL.Input(tensor=features['b'])
# Earlier
# b = KL.Input(shape=[batch_size, n], name='b')
...
...

这些修改将特征张量直接包装到 tensorflow.keras.layers.Input() 中。稍后可以在使用tensorflow.keras.models.Model定义模型时使用它来定义输入参数。

关于python - 在估计器 model_fn 中使用 keras 模型 API 时出现无效参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com