tensorflow 基础知识点(一)

本文详细介绍了TensorFlow中关键函数的使用,包括tf.reduce_sum()的维度求和、tf.nn.embedding_lookup()的张量索引选取及tf.matmul()的矩阵乘法运算。通过实例展示了如何进行归一化处理、向量相似度计算等深度学习基础操作。
  1. tf.reduce_sum()
  2. tf.nn.embedding_lookup()
  3. tf.matmul()

归一化功能涉及函数:
reduce_sum() 用于计算张量tensor沿着某一维度的和,可以在求和后降维。具体参考:彻底理解 tf.reduce_sum()

tf.reduce_sum(
    input_tensor, 
    axis=None, 
    keepdims=None,
    name=None,
    reduction_indices=None, 
    keep_dims=None)
  • input_tensor:待求和的tensor;
  • axis:指定的维,如果不指定,则计算所有元素的总和;
  • keepdims:是否保持原有张量的维度,设置为True,结果保持输入tensor的形状,设置为False,结果会降低维度,如果不传入这个参数,则系统默认为False;
  • name:操作的名称;
  • reduction_indices:在以前版本中用来指定轴,已弃用;
  • keep_dims:在以前版本中用来设置是否保持原张量的维度,已弃用;
vocabulary_size = 10
embedding_size = 4
embeddings = tf.truncated_normal([vocabulary_size, embedding_size],
                            stddev=1.0 / math.sqrt(embedding_size))

with tf.Session() as session:
    # print(session.run(embeddings))
    norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
    normalized_embeddings = embeddings / norm
    print(session.run(norm))
    print("####",norm.shape, embeddings.shape)
    print(session.run(normalized_embeddings))

res:
在这里插入图片描述
tf.nn.embedding_lookup函数
tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素。tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量对应的索引,tensor、id 可以使np对象或者tensor对象。

valid_dataset = tf.constant([1, 2, 3], dtype=tf.int32)
b = tf.nn.embedding_lookup(embeddings, valid_dataset)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(b))
    print("------------------")
    print(sess.run(embeddings))

res:
在这里插入图片描述
相似度计算。一般,向量的相似度指的是余弦相似度,即对应位置相乘。计算过程:a:shape(10, 4) b:shape(3,4),a 中每个向量与 b中每个向量的相似度结果:c:shape(10, 3)。计算时需要b转置
涉及的函数tf.matmul()

vocabulary_size = 10
embedding_size = 4
embeddings = tf.truncated_normal([vocabulary_size, embedding_size],
                            stddev=1.0 / math.sqrt(embedding_size))
norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
normalized_embeddings = embeddings / norm ## shape(10, 4)

valid_dataset = tf.constant([1, 2, 3], dtype=tf.int32)
valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset) ## shape(3, 4)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    # print(sess.run(valid_embeddings))
    # print("------------------")
    # print(sess.run(embeddings))
    similarity = tf.matmul(
        normalized_embeddings, valid_embeddings, transpose_b=True)
    print(sess.run(similarity)) ## shape(10, 3)
    print(similarity.shape)

res:
在这里插入图片描述

<think>我们正在讨论PyTorch和TensorFlow知识点。根据引用内容,我们可以总结出以下关键点: 1. **PyTorch基础操作**(来自引用[1]): - 张量创建:使用`torch.tensor()`可以从列表、元组等数据结构创建张量。 - 示例:`torch.tensor([[1, 2], [3, 4]])` 创建了个2D整型张量,`torch.tensor((1.0, 2.5, 3.3))` 从元组创建了浮点张量。 2. **部署工具对比**(来自引用[2]): - TensorFlow有成熟的部署工具TensorFlow Serving。 - PyTorch的部署工具TorchServe相对较新,但提供了基本功能(如模型归档、服务器、API端点等),并支持HuggingFace等框架。 3. **环境配置**(来自引用[3]): - 在Ubuntu系统中配置深度学习环境(包括Anaconda、CUDA、cuDNN、PyTorch和TensorFlow)的步骤示例。 用户希望获取torch和tensorflow知识点,我们可以从以下几个方面展开: - 基础概念(张量、计算图) - 模型构建与训练 - 部署工具 - 生态系统 下面我将组织知识点,并按照要求使用LaTeX格式。 ### PyTorch与TensorFlow对比 #### 1. 基础概念 - **PyTorch**: 动态计算图(即时执行),更接近Python编程习惯。例如: ```python import torch a = torch.tensor([1.0], requires_grad=True) b = torch.tensor([2.0]) c = a * b c.backward() print(a.grad) # 输出梯度值 ``` - **TensorFlow**: 早期使用静态计算图(先定义后执行),2.0版本引入了即时执行(Eager Execution),同时保留静态图(Graph Execution)模式。示例: ```python import tensorflow as tf a = tf.constant([1.0]) b = tf.constant([2.0]) c = a * b # 在Eager模式下直接输出结果 print(c) ``` #### 2. 模型构建 - **PyTorch**:使用`nn.Module`定义模型: ```python class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.fc = torch.nn.Linear(10, 1) def forward(self, x): return self.fc(x) ``` - **TensorFlow**:可以使用Keras API(高级)或自定义模型(低级): ```python model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(10,)) ]) ``` #### 3. 训练流程 两者训练流程相似,都包含: - 定义模型 - 定义损失函数和优化器 - 迭代数据,前向传播、计算损失、反向传播、更新参数 #### 4. 部署 - **TensorFlow**: 使用TensorFlow Serving进行部署,支持模型版本管理和REST/gRPC接口[^2]。 - **PyTorch**: 使用TorchServe(仍在发展中),提供模型归档、API端点等功能[^2]。 #### 5. 生态系统 - **PyTorch**:在学术界更受欢迎,拥有丰富的库(如HuggingFace Transformers)。 - **TensorFlow**:在工业界部署更成熟,支持移动端(TensorFlow Lite)、浏览器(TensorFlow.js)等。 ### 环境配置 在Ubuntu系统中,通常需要配置: 1. 安装NVIDIA驱动 2. 安装CUDA和cuDNN(例如CUDA 11.1[^3]) 3. 安装Anaconda 4. 使用pip或conda安装PyTorch和TensorFlow 例如PyTorch安装命令(CUDA 11.1): ```bash pip install torch==1.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html ``` TensorFlow安装命令(CUDA 11.1): ```bash pip install tensorflow-gpu==2.5.0 ``` 以上是PyTorch和TensorFlow的主要知识点对比。接下来,我们将生成相关问题。 §§相关问题§§ 1. PyTorch动态计算图和TensorFlow静态计算图有什么区别? 2. 如何在PyTorch和TensorFlow中实现自定义层? 3. 如何选择使用PyTorch还是TensorFlow? 4. TorchServe和TensorFlow Serving在部署模型时有哪些主要区别? 5. 在配置深度学习环境时,如何检查CUDA和cuDNN是否正确安装? </think>### PyTorch与TensorFlow核心知识点总结 #### 基础操作对比 1. **张量创建** - PyTorch(引用[1]): ```python torch.tensor([[1, 2], [3, 4]]) # 2D整型张量 torch.tensor((1.0, 2.5, 3.3)) # 元组转浮点张量 ``` - TensorFlow: ```python tf.constant([[1, 2], [3, 4]]) # 2D常量张量 tf.convert_to_tensor((1.0, 2.5, 3.3)) # 元组转张量 ``` 2. **计算图特性** - TensorFlow:早期采用**静态计算图**(先定义后执行) ```python # TF 1.x风格 a = tf.placeholder(tf.float32) b = tf.placeholder(tf.float32) c = tf.add(a, b) with tf.Session() as sess: sess.run(c, feed_dict={a: 1.0, b: 2.5}) # 输出3.5 ``` - PyTorch:默认**动态计算图**(即时执行) ```python a = torch.tensor(1.0) b = torch.tensor(2.5) c = a + b # 直接输出tensor(3.5) ``` #### 二、部署能力比较(引用[2]) | 特性 | TensorFlow Serving | TorchServe | |--------------|----------------------------------|--------------------------------| | 成熟度 | ✅ 生产级稳定 | ️ 实验阶段(快速迭代中) | | 核心功能 | 模型版本管理/REST+gRPC接口 | 模型归档/API端点/指标监控 | | 扩展支持 | TensorFlow Lite/JS | HuggingFace/Waveglow/AWS | | 性能优化 | 自动批处理/模型预热 | 基础批处理/快照管理 | #### 三、生态系统差异 1. **PyTorch优势** - 学术研究首选(论文代码复现率$\geq 85\%$) - 调试友好:Pythonic动态图设计 - TorchVision/TorchText等扩展库丰富 2. **TensorFlow优势** - 工业部署成熟:TFX管道/Kubeflow支持 - 跨平台支持:移动端(TFLite)/网页端(TF.js) - 生产工具链:TensorBoard可视化/TensorFlow Extended #### 四、环境配置建议(引用[3]) 通用Ubuntu深度学习环境流程: 1. 安装CUDA(示例CUDA 11.1) ```bash wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run sudo sh cuda_11.1.0_455.23.05_linux.run ``` 2. 安装框架: ```bash # PyTorch (CUDA 11.1) pip install torch==1.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html # TensorFlow 2.x pip install tensorflow-gpu==2.6.0 ``` 3. 验证安装: ```python import torch print(torch.cuda.is_available()) # 应返回True import tensorflow as tf print(tf.config.list_physical_devices('GPU')) # 应显示GPU信息 ``` > 注:实际选择需考虑项目需求——**研究原型推荐PyTorch,生产部署首选TensorFlow**[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值