Keras——用Keras搭建线性回归神经网络
文章目录1.前言2.用Keras搭建线性回归神经网络2.1.导入必要模块2.2.创建数据2.3.搭建模型2.4.激活模型2.5.训练+测试 1.前言 神经网络可以用来模拟回归问题 (regression),例如给一组数据,用一条线来对数据进行拟合,并可以预测新输入 x 的输出值。 2.用Keras搭建线性回归神经网络 2.1.导入必要模块 import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt 2.2.创建数据 n 标题中的“Keras——用Keras搭建线性回归神经网络”指的是使用Keras库构建一个简单的线性回归模型。Keras是一个高级神经网络API,它能够运行在TensorFlow、Theano或CNTK等深度学习框架之上,使得创建和训练神经网络变得更加简单易懂。 在描述中,提到神经网络可以用于解决回归问题,即根据一组输入数据预测连续的输出值。线性回归是回归分析的一种基础形式,它尝试找到一条直线(在多维情况下是超平面)来最好地拟合数据点。 下面我们将详细讲解如何使用Keras搭建线性回归神经网络: 1. **导入必要模块**: 我们需要导入必要的Python库。这里用到了numpy处理数值计算,Keras的Sequential模型和Dense层,以及matplotlib绘制图表。代码如下: ```python import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt ``` 2. **创建数据**: 使用numpy生成随机数据来模拟线性关系。在这个例子中,我们生成200个数据点,其中X是-1到1之间的均匀分布,Y是基于线性关系`Y = -0.5 * X + 2.7`加上随机噪声的。数据被分为训练集和测试集: ```python np.random.seed(42) X = np.linspace(-1, 1, 200) # (200,) np.random.shuffle(X) Y = -0.5 * X + 2.7 + np.random.normal(0, 0.05, (200,)) plt.scatter(X, Y) plt.show() X_train, Y_train = X[:160], Y[:160] # 训练数据0-159 X_test, Y_test = X[160:], Y[160:] # 测试数据 ``` 3. **搭建模型**: 使用Sequential模型,它允许我们一层一层地添加神经网络层。对于线性回归,我们只需要一个全连接层(Dense)。在这里,`input_dim=1`表示输入是一维的,`units=1`表示输出也是一维的,即我们的目标变量。 ```python model = Sequential() model.add(Dense(units=1, input_dim=1)) ``` 4. **激活模型**: 定义了模型结构后,需要编译模型以指定损失函数和优化器。线性回归通常使用均方误差(MSE)作为损失函数,这里使用随机梯度下降(SGD)优化器。 ```python model.compile(loss='mse', optimizer='sgd') ``` 5. **训练与测试**: 使用`model.train_on_batch()`进行批量训练,该方法接受训练数据和对应的标签,返回每批训练的损失。我们设置循环训练500次,每100次打印一次训练损失。训练完成后,使用`model.evaluate()`评估模型在测试集上的性能,同样返回损失。我们可以获取模型权重和偏置,以及使用模型预测测试集数据并绘制预测结果。 ```python print('Training.................') for step in range(500): cost = model.train_on_batch(X_train, Y_train) if step % 100 == 0: print('Train cost:', cost) print('\nTesting................') cost = model.evaluate(X_test, Y_test, batch_size=40) print('test cost:', cost) W, b = model.layers[0].get_weights() print('Weights=', W, '\nbiases=', b) Y_pred = model.predict(X_test) plt.scatter(X_test, Y_test) plt.plot(X_test, Y_pred) plt.show() ``` 通过这个过程,我们成功地用Keras搭建了一个线性回归神经网络,它能够拟合数据并进行预测。值得注意的是,虽然在简单线性回归问题中,传统统计方法如最小二乘法可能更为直观且高效,但在复杂的非线性问题或者大型数据集上,神经网络的优势就会显现出来。
- 粉丝: 3
- 资源: 973
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论5