有没有办法将自定义 keras 模型放入 python class 方法中?
Is there a way to put a customized keras model inside a python class method?
我正在尝试使用 class 方法在 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' 未定义
你一定是在调用这样的方法
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))
是的,有办法。您必须使用 keras.Model 和 overtire 调用方法扩展您的自定义模型 class,然后您可以从您自己的自定义 class 调用 fit 方法。
您可以遵循以下 Keras 文档。
https://keras.io/models/about-keras-models/#model-subclassing
我正在尝试使用 class 方法在 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' 未定义
你一定是在调用这样的方法
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))
是的,有办法。您必须使用 keras.Model 和 overtire 调用方法扩展您的自定义模型 class,然后您可以从您自己的自定义 class 调用 fit 方法。 您可以遵循以下 Keras 文档。 https://keras.io/models/about-keras-models/#model-subclassing