model.evaluate需要输入和输出,例如
evaluation = model.evaluate(np.random.random((1, 100)), np.random.random((1, 1)))
我认为一步一步的例子会更有益。这是一个工作示例:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
N = 1000
dimension = 100
# create some random input features (x) and output (y)
np.random.seed(0)
x = np.random.random((N, dimension))
y = np.random.random((N,))
# split the data into train and test sets
split = int(0.8 * N)
x_train = x[:split]
y_train = y[:split]
x_test = x[split:]
y_test = y[split:]
# build the model architecture
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=dimension))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# train the model
model.fit(x_train, y_train, epochs=100)
# evaluate the model on train and test sets
train_loss = model.evaluate(x_train, y_train)[0]
test_loss = model.evaluate(x_test, y_test)[0]
print('train loss:', train_loss, ', test loss:', test_loss)
# predict (y) for a random input (x)
y_predict = model.predict(np.random.random((1, dimension)))
print('prediction:', y_predict)
输出binary_crossentropy损失:
train loss: 0.5500347983837127 , test loss: 0.7403841614723206
prediction: [[0.38731796]]
如果您跳过培训,即注释掉
# train the model
model.fit(x_train, y_train, epochs=100)
输出将是
train loss: 0.7098221921920777 , test loss: 0.7191445398330688
prediction: [[0.32682237]]