当前位置: 首页 > ops >正文

2tensorf

写给新人的深度学习扫盲贴:TensorFlow与Keras

一、TensorFlow与Keras简介

简单来讲,TensorFlow与Keras同属于人工智能下的深度学习框架,并且在发展过程中,它们居然走到了一起,让人不禁慨叹,技术无国界,技术是未来。
在这里插入图片描述

1.1 TensorFlow:工业级深度学习引擎

诞生背景:2015年,Google Brain团队开源了TensorFlow,旨在为学术界和工业界提供统一的机器学习平台。其名称“TensorFlow”源于“张量(Tensor)”和“数据流(Flow)”,体现了其核心设计理念:通过数据流图进行多维数组(张量)的计算。

优势

  • 灵活性与可扩展性:支持从移动端到分布式集群的部署(如TensorFlow Lite、TensorFlow Serving)。
  • 生态系统完善:提供可视化工具(TensorBoard)、预训练模型库(TensorFlow Hub)和社区支持。
  • 跨平台兼容性:可在CPU、GPU、TPU等硬件上运行,并支持多种编程语言接口。

1.2 Keras:深度学习的高级接口

设计哲学:Keras由法国人François Chollet于2015年创建,目标是“让深度学习像搭积木一样简单”。其API设计遵循“用户友好、模块化、易扩展”的原则,尤其适合快速原型开发。

与TensorFlow的融合:自TensorFlow 2.0起,Keras被整合为tf.keras,成为官方推荐的高级API。这种集成既保留了Keras的简洁性,又结合了TensorFlow的底层优化能力。

1.3 两者关系:互补而非对立

  • Keras是TensorFlow的“快捷方式”:通过tf.keras,可以用更少的代码实现复杂模型,例如只需几行代码即可构建卷积神经网络。
  • TensorFlow是Keras的“强力引擎”:Keras依赖TensorFlow等后端进行计算加速,同时TensorFlow的底层API(如自动微分、分布式训练)为Keras提供了性能保障。

二、了解核心组件

2.1 张量(Tensor):数据的基本单位

张量是多维数组的泛化形式。例如:

  • 标量(0维):单个数字(如5
  • 向量(1维):一列数字(如[1, 2, 3]
  • 矩阵(2维):表格数据(如[[1,2], [3,4]]
  • 高维张量:图像数据(3维:高度×宽度×通道)或视频数据(4维)。
2.2 层(Layer):模型的构建块

层是神经网络的基本单元,常见类型包括:

  • 全连接层(Dense):每个神经元与上一层全部连接,用于特征组合。
  • 卷积层(Conv2D):通过滤波器提取空间特征,适合图像处理。
  • 循环层(LSTM/GRU):处理序列数据(如文本、时间序列),具有记忆功能。
2.3 模型(Model):层的组合

模型是层的定向无环图(DAG)。Keras提供两种构建方式:

  • 顺序模型(Sequential):层的线性堆叠,适合简单结构。
  • 函数式API:支持多输入/输出、共享层等复杂拓扑。

三、TensorFlow与Keras的安装

3.1 推荐使用虚拟环境

使用condavenv创建隔离环境,避免依赖冲突:

# 使用conda  
conda create -n tf_env python=3.8  
conda activate tf_env  # 使用venv  
python -m venv tf_env  
source tf_env/bin/activate  # Linux/macOS  
tf_env\Scripts\activate     # Windows  

本人在当前笔记本使用后者。

3.2 安装TensorFlow与Keras

通过pip一键安装最新稳定版(包含Keras):

pip install tensorflow  

GPU加速支持
若使用NVIDIA显卡,安装GPU版本以提升训练速度:

pip install tensorflow[and-cuda]  

安装独立版Keras(可选)
Keras已默认集成在TensorFlow中(tf.keras)。如需安装独立版本:

pip install keras  

3.3 验证安装

执行python语句, 本人此系列文章使用jupyter notebook。

import tensorflow as tf  
print("TensorFlow版本:", tf.__version__)  
print("GPU是否可用:", tf.config.list_physical_devices('GPU'))  

在这里插入图片描述

3.4 Hello world

构建一个简单的全连接网络,测试环境是否正常工作:

import tensorflow as tf  # 加载MNIST数据集  
mnist = tf.keras.datasets.mnist  
(x_train, y_train), (x_test, y_test) = mnist.load_data()  
x_train, x_test = x_train / 255.0, x_test / 255.0  # 归一化  # 构建模型  
model = tf.keras.Sequential([  tf.keras.layers.Flatten(input_shape=(28, 28)),  tf.keras.layers.Dense(128, activation='relu'),  tf.keras.layers.Dense(10, activation='softmax')  
])  # 编译与训练  
model.compile(optimizer='adam',  loss='sparse_categorical_crossentropy',  metrics=['accuracy'])  
model.fit(x_train, y_train, epochs=5)  # 评估  
test_loss, test_acc = model.evaluate(x_test, y_test)  
print("测试集准确率:", test_acc)  

执行结果如下:

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11490434/11490434 ━━━━━━━━━━━━━━━━━━━━ 128s 11us/stepEpoch 1/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 9s 4ms/step - accuracy: 0.8739 - loss: 0.4405
Epoch 2/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 9s 5ms/step - accuracy: 0.9638 - loss: 0.1219
Epoch 3/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - accuracy: 0.9769 - loss: 0.0780
Epoch 4/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - accuracy: 0.9828 - loss: 0.0561
Epoch 5/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - accuracy: 0.9870 - loss: 0.0419
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.9696 - loss: 0.0964
测试集准确率: 0.9740999937057495
http://www.xdnf.cn/news/9478.html

相关文章:

  • ElectronBot复刻-电路测试篇
  • 数据分析与应用-----使用scikit-learn构建模型
  • 跑步机的控制面板英文的意思
  • 财政票据查验接口功能解析-接口实践-医疗票据管理
  • SSM 框架深度整合实战:从零构建企业级 Java 应用
  • 华为OD最新机试真题-反转每对括号间的子串-OD统一考试(B卷)
  • Vue 3 的 <script setup> 语法糖(持续更新)
  • 尚硅谷redis7 58-62 主从复制之一主二仆
  • 【前端】JS引擎 v.s. 正则表达式引擎
  • 创建型设计模式之Singleton(单例)设计模式
  • 力扣热题100(附刷题表版)
  • 【西方哲学-0】西哲思维导图mermaid格式
  • 离线场景下扫描与修复系统缺失补丁解决方案
  • 【计算机网络】第1章:概述—协议层次及服务模型
  • 网络安全之XSS漏洞
  • Unity屏幕适配——适配信息计算和安全区域适配
  • 触控精灵 ADB运行模式填写电脑端IP教程
  • 九、【前后端联调篇】Vue3 + Axios 异步通信实战
  • ​​知识图谱:重构认知的智能革命​
  • 安世亚太:信息化和数字化的底层逻辑
  • Ansible模块——Ansible配置文件!
  • 3D建模的全景图谱:从55个工具到元宇宙的数字革命
  • C++中,`friend`关键字的使用
  • 【数据分析】Matplotlib+Pandas+Seaborn绘图
  • 玻纤效应的时序偏差
  • 大模型本地部署
  • 内网穿透,代理服务,NAT
  • HTTP Accept简介
  • 鸿蒙---使用真机模拟器的时候,图片不加载问题
  • NV295NV306美光固态闪存NV313NW830