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
可解释性 较好 较差,常为黑盒
典型应用场景 结构化数据、小数据集、需解释性 非结构化数据、大数据集、高性能
相关推荐
阿杰学AI1 小时前
AI核心知识100——大语言模型之 LM Arena(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·模型评测·lm arena
星火开发设计1 小时前
虚析构函数:解决子类对象的内存泄漏
java·开发语言·前端·c++·学习·算法·知识
小刘的大模型笔记1 小时前
大模型微调实战——从数据准备到落地部署全流程
人工智能
技术狂人1681 小时前
告别“复读机“AI:用Agent Skills打造你的专属编程副驾
人工智能·职场和发展·agent·skills
龙山云仓1 小时前
No152:AI中国故事-对话祖冲之——圆周率与AI精度:数学直觉与极限探索
大数据·开发语言·人工智能·python·机器学习
陈广亮2 小时前
OpenClaw 入门实战:5分钟搭建你的自托管 AI 助手
人工智能
琅琊榜首20202 小时前
AI+Python实操指南:用编程赋能高质量网络小说创作
开发语言·人工智能·python
JinchuanMaster2 小时前
Ubuntu20.04安装50系显卡驱动[不黑屏版本]
linux·人工智能·深度学习·ubuntu·机器学习·机器人·gpu算力
草莓熊Lotso2 小时前
Linux 程序地址空间深度解析:虚拟地址背后的真相
java·linux·运维·服务器·开发语言·c++·人工智能