TensorFlow学习

1、概述

谷歌开发的开源机器学习框架,高效、便捷地实现神经网络。

TensorFlow把前向传播、反向传播、参数更新这些复杂容易出错的底层步骤全部封装起来了,只需调用简洁的API,就能完成模型的搭建和训练。

2、学习

神经网络的核心三层:输入层(接数据)、隐藏层(学特征)、输出层(给结果)

输入层 接收原始数据

隐藏层 提取数据特征

输出层 给出最终结果

层级 核心作用 房价预测场景举例
输入层 接收原始数据("喂给模型的原材料") 面积、卧室数、楼层、房龄等房价相关特征
隐藏层 提取数据特征("模型思考、分析的核心") 计算 "面积 × 楼层" 的价值、"房龄越老价格越低" 等规律
输出层 给出最终结果("模型的答案") 预测出的具体房价(比如 100 万、150 万)

神经网络里的前向传播和反向传播

前向传播(模型预测结果过程)

从输入层→隐藏层→输出层,算出预测结果。

示例:

反向传播(学习和纠错)

从输出层→隐藏层,根据预测值和真实值的偏差,修改每层的参数(权重 W、偏置 b),让模型预测越来越准。

示例:

如果不用TensorFlow,代码可能是这样的,容易出错、复杂:

python 复制代码
import numpy as np

# 手动定义参数
W1 = np.random.randn(2, 10)  # 输入→隐藏层权重
b1 = np.random.randn(10)     # 隐藏层偏置
W2 = np.random.randn(10, 1)  # 隐藏→输出层权重
b2 = np.random.randn(1)      # 输出层偏置
learning_rate = 0.001        # 学习率

# 前向传播
def forward(x):
    hidden = np.maximum(0, np.dot(x, W1) + b1)  # ReLU激活
    output = np.dot(hidden, W2) + b2
    return hidden, output

# 手动反向传播(计算梯度+更新参数)
def backward(x, y, hidden, output):
    global W1, b1, W2, b2
    # 1. 计算输出层梯度
    loss = output - y
    dW2 = np.dot(hidden.T, loss)
    db2 = np.sum(loss, axis=0)
    # 2. 计算隐藏层梯度
    dhidden = np.dot(loss, W2.T)
    dhidden[hidden <= 0] = 0  # ReLU梯度
    dW1 = np.dot(x.T, dhidden)
    db1 = np.sum(dhidden, axis=0)
    # 3. 手动更新参数
    W2 -= learning_rate * dW2
    b2 -= learning_rate * db2
    W1 -= learning_rate * dW1
    b1 -= learning_rate * db1

# 训练(还要写循环、数据迭代...)
x = np.array([[80, 2]])
y = np.array([[80]])
hidden, output = forward(x)
backward(x, y, hidden, output)

使用TensorFlow,代码框架如下,简洁只需调用API:

python 复制代码
import tensorflow as tf
import numpy as np

# 构建顺序模型(层按顺序堆叠)
model = tf.keras.Sequential([
    # 隐藏层:10个神经元,ReLU激活,输入层为2个特征
    tf.keras.layers.Dense(10, activation='relu', input_shape=(2,)),
    # 输出层:1个神经元(回归任务,无激活函数)
    tf.keras.layers.Dense(1)
])

# 配置训练规则:Adam优化器,MSE损失函数(回归任务)
model.compile(optimizer='adam', loss='mse')

# 准备训练数据(特征:面积/卧室数;标签:真实房价)
x_train = np.array([[80, 2]])
y_train = np.array([[80]])

# 训练模型:10轮(自动完成前向+反向传播、参数更新)
model.fit(x_train, y_train, epochs=10)

# 预测:输入90㎡/3卧室,输出预测房价
test_data = np.array([[90, 3]])
pred_price = model.predict(test_data)
print(f"预测房价:{pred_price[0][0]:.2f} 万")

实际demo测试

在智能体中编写提示词就可以了,智能体会用tensorflow生成代码的

神经网络模型-早停

模型训练过程中,监控特定指标(验证集的损失率),当这个指标在一定数量的训练轮次内不再改善时,就停止训练,防止模型过拟合。在训练集上表现的很好,在实际数据上表现的很差。

模型训练参数epochs

最大训练轮数,示例中整个训练数据集会被模型最大学习100轮。

1个epoch = 模型把训练集里的所有样本(比如:500条数据)都向前传播 + 向后传播一遍

神经网络与传统机器学习相比 有什么区别??是不是神经网络可以完全替代传统机器学习??

可以自己豆包查下,以下是我查的:

我记住的就是数据量的区别。

特征 传统机器学习 神经网络
特征工程 高度依赖人工 自动学习特征
模型结构 固定,复杂度有限 灵活,可扩展性强,复杂度高
数据量需求 中小规模数据即可 通常需要大规模数据
计算资源 需求较低 需求巨大,常需 GPU/TPU
可解释性 较好 较差,常为黑盒
典型应用场景 结构化数据、小数据集、需解释性 非结构化数据、大数据集、高性能
相关推荐
个入资料21 小时前
阿里云ecs+飞书搭建openclaw
人工智能
孤烟1 天前
【RAG 实战系列 02】检索精度翻倍!混合检索(稀疏 + 稠密)实战教程
人工智能·llm
明明如月学长1 天前
OpenClaw 帮我睡后全自动完成了老板交代的任务
人工智能
uuware1 天前
Lupine.Press + AI 助您分分钟搞定技术项目的文档网站
人工智能·前端框架
海上日出1 天前
使用 QuantStats 进行投资组合绩效分析:Python 量化实战指南
人工智能
Qinana1 天前
150行代码搞定私有知识库!Node.js + LangChain 打造最小化 RAG 系统全流程
人工智能·程序员·node.js
猿猿长成记1 天前
AI专栏 | AI大法则之思维链、自洽性、思维树
人工智能
用户5191495848451 天前
CrushFTP 条件竞争认证绕过漏洞利用工具 (CVE-2025-54309)
人工智能·aigc
一拳不是超人1 天前
AI时代,35岁程序员焦虑终结:经验从负债变资产
人工智能·程序员
IT_陈寒1 天前
Vite快得离谱?揭秘它比Webpack快10倍的5个核心原理
前端·人工智能·后端