训练一个线性模型

复制代码
import tensorflow as tf
import pandas as pd

# 读取数据
data = pd.read_csv('../data/line_fit_data.csv').values
# 划分训练集和测试集
x = data[:-10, 0]   #第一列排除后10行
y = data[:-10, 1]   #第二列排除后10行
x_test = data[-10:, 0] #第一列后10行
y_test = data[-10:, 1] #第二列后10行

# 构建Sequential网络
model_net = tf.keras.models.Sequential()  # 实例化网络
model_net.add(tf.keras.layers.Dense(1, input_shape=(1, )))  # 添加全连接层
print(model_net.summary())

# 构建损失函数
model_net.compile(loss='mse', optimizer=tf.keras.optimizers.SGD(learning_rate=0.5))

# 模型训练
model_net.fit(x, y, verbose=1, epochs=20, validation_split=0.2)
pre = model_net.predict(x_test)

# 利用均方误差进行模型评价
y_test = pd.DataFrame(y_test)
pre = pd.DataFrame(pre)
mse = (sum(y_test - pre) ** 2) / 10
print('均方误差为:', mse)

总结

model_net.add() :向模型中添加层,第一层需指定 `input_shape` |

Dense(units=1) :定义全连接层 ,`units` 决定输出维度 |

`input_shape=(1,)` : 指定输入数据的形状 ,仅第一层需要,元组格式 |

model.summary(): 查看模型结构和参数数量

**`units=1`**:输出维度为1(即该层只有1个神经元)。

  • **`input_shape=(1,)`**:指定输入数据的形状为 `(1,)`(即每个样本是1个数值)。

**1. `model_net.compile()`:配置模型训练参数**

  • **作用**:定义模型的损失函数、优化器和评估指标。

  • **参数解析**:

  • **`loss='mse'`**:使用均方误差(Mean Squared Error)作为损失函数,适用于**回归任务**(如预测房价、温度等连续值)。

  • **`optimizer=tf.keras.optimizers.SGD(learning_rate=0.5)`**:

  • 优化器:随机梯度下降(Stochastic Gradient Descent, SGD)。

  • 学习率:`0.5`(较高的学习率,可能导致训练不稳定,需根据任务调整)。

  • **未显式指定 `metrics`**:如需要监控准确率等指标,可添加 `metrics='mae'`(平均绝对误差)。


**2. `model_net.fit()`:模型训练**

  • **作用**:用训练数据拟合模型,更新权重参数。

  • **参数解析**:

  • **`x, y`**:输入数据和标签(假设 `x` 是特征,`y` 是目标值)。

  • **`verbose=1`**:显示训练进度条(`0`=不显示,`1`=显示进度条,`2`=仅显示轮次结果)。

  • **`epochs=20`**:训练20轮(所有数据完整遍历一次为一轮)。

  • **`validation_split=0.2`**:从训练数据中自动划分20%作为验证集(例如,若 `x` 有100个样本,则80个用于训练,20个用于验证)。

**`pd.DataFrame()`** 是 Pandas 库中用于创建或转换数据为 **二维表格结构**(DataFrame)的函数。

  • 这行代码的目的是将 `y_test`(可能是列表、NumPy 数组或其他格式)转换为 DataFrame,以便后续使用 Pandas 的功能(如数据操作、保存到文件、与其他 DataFrame 合并等)。
相关推荐
咖啡星人k2 小时前
2026 多模态大模型:AI 如何“看图+读字+听音“三合一,MonkeyCode 免费上手
人工智能·深度学习·神经网络·计算机视觉·自然语言处理
johnsong3 小时前
深度拆解:150M循环模型如何用循环推理击败大Transformer
android·深度学习·transformer
txg6663 小时前
LLM 驱动漏洞传播验证:TransferFuzz-Pro 如何自动调试“继承“来的安全债
人工智能·深度学习·安全
Rocky Ding*4 小时前
【三年面试五年模拟】2026-08-18_哔哩哔哩_AI应用岗Agent开发一面面经(含完整答案)
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·ai agent
2601_957879334 小时前
Seedance排队太久怎么办?2026免排队AI视频工具与替代方案怎么选
大数据·人工智能·深度学习
a187927218314 小时前
从一条直线到大模型输出一个token(九):输出矩阵与多层堆叠
深度学习·ai·transformer·token·注意力机制·deepseek·多层堆叠
jay神5 小时前
YOLO模型什么时候应该加注意力机制?
人工智能·深度学习·yolo·分类·回归·毕业设计
sel_95 小时前
【多轮对话论文导读(二)】多轮对话与LLM Agent论文阅读:长期记忆、多轮评估与Agent训练
人工智能·深度学习·算法·语言模型·自然语言处理
AI云海5 小时前
深度学习_全连接网络实现回归任务
人工智能·深度学习·回归
code_pgf5 小时前
SAMLabeler-MNN 项目使用与编译问题解决
人工智能·深度学习·mnn