【问题标题】:Is there a way to put a customized keras model inside a python class method?有没有办法将自定义的 keras 模型放入 python 类方法中?
【发布时间】:2020-01-12 20:01:33
【问题描述】:

我正在尝试使用类方法在 python 中构建深度神经网络。 ((其背后的主要思想是稍后尝试自定义损失函数)) 我正在尝试在定义神经网络结构的函数中使用 Keras,但它似乎不起作用。

# create a class to
class PGNN(keras.Sequential):

    def __init__(self,x,y):
        super().__init__()

        X = np.concatenate([x,y], axis=1)
        self.X = X
        self.x = X[:,0:1]
        self.y = X[:,1:2]

    def build_model_u(self):
        model_u = models.Sequential
        model_u.add(layers.Dense(64, activation='tanh', input_shape= 1000))
        model_u.add(layers.Dense(32, activation='tanh'))
        model_u.add(layers.Dense(16, activation='tanh'))
        model_u.add(layers.Dense(8, activation='tanh'))
        model_u.add(layers.Dense(4, activation='tanh'))
        model_u.add(layers.Dense(1))
        model_u.compile(optimizer='Adam', loss='mse', metrics=['mae'])


    def train(self, x_train, y_train):
        model = build_model_u(self)
        model.fit()

    def predict(self, x_test):
        model.predict(x_test)

    def validation(self, x_test, y_test):
        model.evaluate(x_test,y_test, verbose=2)

我希望模型在我调用 model.fit(x_train,y_train) 时开始训练,但我总是收到错误“build_model_u is not defined”

model = build_model_u(self)

NameError:名称“build_model_u”未定义

【问题讨论】:

  • 所以尽管使用相同的代码,但您会遇到不同的错误?
  • 提供更多代码!!您没有显示用于调用 fitbuild_model_u 的代码。如果是这样,那我猜你打电话给model = build_model_umodel.fit 什么的?那么这就是错误。
  • 错误信息显示哪一行有问题,所以请向我们展示这一行。
  • 我已经用完整的代码和错误信息更新了问题

标签: python keras deep-learning loss-function


【解决方案1】:

你必须像这样调用方法

model = build_model_u
model.fit(x_train,y_train)

这样调用函数

model = build_model_u()
model.fit(x_train,y_train)

你也可以删除输出变量

output= model_u.add(layers.Dense(3))

并保持这种方式

model_u.add(layers.Dense(3))

【讨论】:

    【解决方案2】:

    是的,有办法。您必须使用 keras.Model 和 overtire call 方法扩展您的自定义模型类,然后您可以从您自己的自定义类中调用 fit 方法。 您可以遵循以下 Keras 文档。 https://keras.io/models/about-keras-models/#model-subclassing

    【讨论】:

      猜你喜欢
      • 2012-07-31
      • 2021-02-18
      • 2019-11-30
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多