1.# 交叉检验
k = 4
num_val_samples = len(train_data) // k # //得到的是一个整数
num_epochs = 100
all_scores = [] # 得分
# 进行循环的交叉检验
for i in range(k):
# 首先把验证集取出来,要取出验证集,需要得到验证集两个边界的大小
val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]
val_targets = train_target[i * num_val_samples: (i + 1) * num_val_samples]
# 构造训练集,因为我们的训练集本身是不连续的,所以需要用个函数连起来
partial_train_data = np.concatenate(
[train_data[: i * num_val_samples],
train_data[(i + 1) * num_val_samples:]],
axis=0)
partial_train_targets = np.concatenate(
[train_target[: i * num_val_samples],
train_target[(i + 1) * num_val_samples:]],
axis=0)
# 使用模型,每进行一折,都要重新构造一个模型出来
model = build_model()
model.fit(partial_train_data, partial_train_targets, epochs=num_epochs, batch_size=1, verbose=0) # 如果输出的话行数有101*100*4,输出太多,所以暂时不输出
val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=0)
all_scores.append(val_mae)
print('第', i + 1, '折,MSE:', val_mse, 'MAE:',val_mae)