def train_model(x_train, y_train, dropout_prob, lr, batch_size, epochs):
nn_model = tf.keras.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=(10,)),
tf.keras.layers.Dropout(dropout_prob),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dropout(dropout_prob),
tf.keras.layers.Dense(1, activation='sigmoid')
])
nn_model.compile(keras.optimizers.Adam(lr), loss='binary_crossentropy', metrics=['accuracy'])
history = nn_model.fit(
x_train,y_train,epochs=epochs, batch_size=batch_size, validation_split=0.2, verbose=0
)
plot_history(history)
return nn_model, history
least_loss_model = train_model(x_train, y_train, 0.2, 0.005, 128, 100)
predicted = least_loss_model.predict(x_test)
print(predicted)
这会给出以下属性错误:
Traceback (most recent call last):
File "C:\Users\~\ai.py", line 162, in <module>
predicted = least_loss_model.predict(x_test)
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute 'predict'
我已经尝试过predicted=least_loss_model.predict_proba(x_test)
这是因为您要返回历史记录和 nn_model,它将返回类型元组。如果你只是返回 nn_model 然后做同样的事情就会起作用。或者试试这个:
predicted = least_loss_model[0].predict(x_test)
这应该有效。