我正在嘗試使用類方法在 python 中構建一個深度神經網絡。((其背后的主要思想是稍后嘗試自定義損失函數))我試圖在定義神經網絡結構的函數中使用 Keras,但它似乎不起作用。# create a class toclass 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”model = build_model_u(self)NameError:名稱“build_model_u”未定義
2 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
您必須調用類似的方法
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))

守著一只汪
TA貢獻1872條經驗 獲得超4個贊
是的,有辦法。您必須使用 keras.Model 和 overtire 調用方法擴展您的自定義模型類,然后您可以從您自己的自定義類調用 fit 方法。您可以遵循以下 Keras 文檔。 https://keras.io/models/about-keras-models/#model-subclassing
添加回答
舉報
0/150
提交
取消