尝试使用 Keras 模拟线性回归

机器算法验证 回归 神经网络 线性模型 深度学习
2022-04-15 16:34:06

我正在尝试构建一个非常简单的 NN 来近似线性函数(字面意思)。

我拿了一个表格数据:

在此处输入图像描述

f(x) = 5 * x

形状:

在此处输入图像描述

现在我正在使用 Keras 构建一个非常简单的 NN:

from keras.models import Sequential
from keras.layers import Dense
from keras.layers.core import Activation, Dense

# define base mode
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(1, input_dim=1, init='normal', activation='relu'))
    model.add(Dense(1, init='normal'))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model

regr = baseline_model()
regr.fit(X_train, Y_train,          
          nb_epoch=200, validation_split=0.2, verbose = 1) #batch_size=5,

并获得完全浪费的输出:

Epoch 197/200
64/64 [==============================] - 0s - loss: 34810.5195 - val_loss: 131652.9375
Epoch 198/200
64/64 [==============================] - 0s - loss: 34809.8574 - val_loss: 131651.5000
Epoch 199/200
64/64 [==============================] - 0s - loss: 34809.2266 - val_loss: 131650.0781
Epoch 200/200
64/64 [==============================] - 0s - loss: 34808.5801 - val_loss: 131648.6406

通过绘制它来确认:

plt.scatter(X_test, Y_test,  color='black')
plt.plot(X_test, regr.predict(X_test), color='blue',
         linewidth=3)

plt.xticks()
plt.yticks()

plt.show()

我有两个假设:

  • 我的模型非常非常错误。
  • 我正在使用 Keras 而不是它的设计方式。

请帮忙。

1个回答

您似乎使用Pandas读取数据,并且您的输入可能有问题。您绝对应该尝试使用numpy生成它:

import numpy as np

X_train = np.linspace(0, 80, 100).reshape(-1, 1)
Y_train = 5 * X_train

对于线性逼近,单个神经元是可以的:

# define base mode
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(1, input_dim=1, init='normal', activation='relu', input_shape=(100,)))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model

为我工作:

在此处输入图像描述