【发布时间】:2020-01-30 22:20:50
【问题描述】:
我正在寻找this cars dataset。我使用此代码构建和训练回归模型,改编自 this article 和 this one。我正在使用所有的训练数据(没有训练/测试拆分):
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.wrappers.scikit_learn import KerasRegressor
dataset=np.loadtxt("cars.csv", delimiter=",", skiprows=1)
x=dataset[:,0:5]
y=dataset[:,5]
y=np.reshape(y, (-1,1))
scaler_x = MinMaxScaler()
scaler_y = MinMaxScaler()
print(scaler_x.fit(x))
xscale=scaler_x.transform(x)
print(scaler_y.fit(y))
yscale=scaler_y.transform(y)
model = Sequential([
Dense(2048, activation='relu', input_dim=5),
Dense(1024, activation='relu'),
Dense(512, activation='relu'),
Dense(1)
])
model.compile(loss='mse', optimizer='adam', metrics=['mse','mae'])
history = model.fit(xscale, yscale, epochs=1000, batch_size=577, verbose=1, validation_split=0)
Xnew= scaler_x.transform(Xnew)
ynew= model.predict(Xnew)
ynew = scaler_y.inverse_transform(ynew)
Znew = scaler_y.inverse_transform(y_train)
plt.figure(figsize=(15,8))
plt.scatter(Znew,ynew);
在 1000 个 epoch 之后,此模型将紧密但不完全拟合输入训练数据:
这个模型有 2,635,777 个可训练参数(数据本身只有 5,778 个数字)。
什么是最小的 Keras 回归模型(就可训练参数的总数而言),它可以训练到几乎完美地拟合此数据(具有 5 个输入参数、1 个输出参数和 963 个样本)?
【问题讨论】:
标签: tensorflow keras regression