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

写给新人的深度学习扫盲贴: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

相关文章:

  • Java数值字符串相加
  • 【QQ音乐】sign签名| data参数 | AES-GCM加密 | webpack(上)
  • C++ 复制构造函数:创建对象的 “拷贝大师”
  • 塔能空化泵节能方案:工厂能耗精准控制的革新之选
  • Vue开发系列——Vue中常见实现区别及Vue.js 模板编译原理
  • 8种常见数据结构及其特点简介
  • 【普及−】洛谷P1706 全排列问题
  • HOMIE——遥操类似ALOHA主从臂的外骨骼驾驶舱收集数据:通过上肢模仿学习和全身控制RL训练自主策略
  • flutter加载dll 报错问题
  • FastApi学习
  • 生成式引擎在不同行业的应用案例
  • 三级联动获取省市区
  • 【razor】采集的同时支持预览和传输的讨论和改造方案探讨
  • leetcode0670. 最大交换-medium
  • 【AUTOSAR OS】 保护功能解析:从原理到应用与源代码解析(下篇)
  • SSE vs WebSocket:两种通讯方案该如何选择?
  • Python学习(3) ----- Python的函数定义及其使用
  • 去除ai写作痕迹的软件有哪些
  • 打卡第31天:模块和库的导入
  • 生成式引擎的认知霸权:为什么传统内容失效?
  • wordpress建立多站点/国际新闻直播
  • .red域名做网站好不好/网页制作软件推荐
  • 青海微网站建设/模板之家官网
  • 建立个人网站的详细步骤/推广普通话宣传周活动方案
  • qq怎么做网站客服/故事式软文范例500字
  • 视频网站seo怎么做/百度指数购买