【发布时间】:2021-04-03 13:41:21
【问题描述】:
...
Epoch 7/10
91/91 - 0s - loss: 84.1231
Epoch 8/10
91/91 - 0s - loss: 65.1705
Epoch 9/10
91/91 - 0s - loss: 53.3347
Epoch 10/10
91/91 - 0s - loss: 45.4169
**11/11 - 0s - loss: 15.8337**
Epoch 1/10
91/91 - 0s - loss: 611.2643
Epoch 2/10
91/91 - 0s - loss: 563.0521
Epoch 3/10
91/91 - 0s - loss: 460.6799
Epoch 4/10
91/91 - 0s - loss: 330.3016
Epoch 5/10
91/91 - 0s - loss: 215.1095
Epoch 6/10
91/91 - 0s - loss: 137.6284
Epoch 7/10
91/91 - 0s - loss: 93.3648
Epoch 8/10
91/91 - 0s - loss: 69.6211
Epoch 9/10
91/91 - 0s - loss: 55.6200
Epoch 10/10
91/91 - 0s - loss: 46.7145
**11/11 - 0s - loss: 19.7976**
Epoch 1/10
91/91 - 0s - loss: 533.4615
Epoch 2/10
91/91 - 0s - loss: 510.9247
Epoch 3/10
91/91 - 0s - loss: 459.0772
Epoch 4/10
91/91 - 0s - loss: 368.3991
Epoch 5/10
91/91 - 0s - loss: 259.9857
Epoch 6/10
91/91 - 0s - loss: 168.8091
Epoch 7/10
91/91 - 0s - loss: 108.7919
Epoch 8/10
91/91 - 0s - loss: 74.7730
Epoch 9/10
91/91 - 0s - loss: 56.3438
Epoch 10/10
91/91 - 0s - loss: 46.0458
**11/11 - 0s - loss: 107.8788**
...
我正在使用“verbose=2”运行 Tensorflow KerasRegressor。我理解除了 ** 中的行之外的大部分输出。它会在所有 epoch 执行后出现,并且总是有奇怪的损失。我首先想到的是所有时期的平均损失,但显然不是。
谁能详细说明。谢谢! :)
代码如下:
import pandas
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
# load dataset
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data'
df = pandas.read_csv(url, delim_whitespace=True, header=None)
dataset = df.values
# split into input (X) and output (Y) variables
X = dataset[:,0:13]
Y = dataset[:,13]
# define base model
def baseline_model():
# create model
model = Sequential()
model.add(Dense(13, input_dim=13, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
# Compile model
model.compile(loss='mean_squared_error', optimizer='adam')
return model
%%time
# evaluate model with standardized dataset
estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, epochs=10, batch_size=5, verbose=2)))
pipeline = Pipeline(estimators)
kfold = KFold(n_splits=10)
results = cross_val_score(pipeline, X, Y, cv=kfold)
print("Standardized: %.2f (%.2f) MSE" % (results.mean(), results.std()))
这是 GoogleColab 代码的链接:https://colab.research.google.com/drive/1b8YUV4ZWMizrF5-kWRMJkiZYqu-iToGx?usp=sharing
【问题讨论】:
-
请向我们展示以下代码...
-
我猜这是验证损失,但我不清楚 cross_val_score 如何调用估计器的拟合函数
-
我猜这与
kfold = KFold(n_splits=2)有关。它出现在每次拆分的末尾,但是为什么每次损失值都这么偏... -
如果是验证损失,预计与训练损失不完全相同。造成这种情况的原因是过拟合/欠拟合或测试集的大小较小,因此在统计上与训练集不同。参见例如this question。
-
请在问题本身中包含代码,而不是作为外部链接。
标签: tensorflow keras scikit-learn verbose