torch or numpy

本文通过实例对比了PyTorch与NumPy在张量处理及数学运算方面的相似之处,包括基本操作如绝对值计算、三角函数计算、均值计算等,并详细展示了矩阵运算的不同方法。

黄色:重点

粉色:不懂

  1. Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算 (前提是你有合适的 GPU), 就像 Numpy 会把 array 放在 CPU 中加速运算. 
    import torch
    import numpy as np
    
    np_data = np.arange(6).reshape((2, 3))
    torch_data = torch.from_numpy(np_data)
    tensor2array = torch_data.numpy()
    print(
        '\nnumpy array:', np_data,          # [[0 1 2], [3 4 5]]
        '\ntorch tensor:', torch_data,      #  0  1  2 \n 3  4  5    [torch.LongTensor of size 2x3]
        '\ntensor to array:', tensor2array, # [[0 1 2], [3 4 5]]
    )

    Torch 中的数学运算

    其实 torch 中 tensor 的运算和 numpy array 的如出一辙, 我们就以对比的形式来看. 如果想了解 torch 中其它更多有用的运算符, API就是你要去的地方.

    # abs 绝对值计算
    data = [-1, -2, 1, 2]
    tensor = torch.FloatTensor(data)  # 转换成32位浮点 tensor
    print(
        '\nabs',
        '\nnumpy: ', np.abs(data),          # [1 2 1 2]
        '\ntorch: ', torch.abs(tensor)      # [1 2 1 2]
    )
    
    # sin   三角函数 sin
    print(
        '\nsin',
        '\nnumpy: ', np.sin(data),      # [-0.84147098 -0.90929743  0.84147098  0.90929743]
        '\ntorch: ', torch.sin(tensor)  # [-0.8415 -0.9093  0.8415  0.9093]
    )
    
    # mean  均值
    print(
        '\nmean',
        '\nnumpy: ', np.mean(data),         # 0.0
        '\ntorch: ', torch.mean(tensor)     # 0.0
    )

    除了简单的计算, 矩阵运算才是神经网络中最重要的部分. 所以我们展示下矩阵的乘法. 注意一下包含了一个 numpy 中可行, 但是 torch 中不可行的方式.

    # matrix multiplication 矩阵点乘
    data = [[1,2], [3,4]]
    tensor = torch.FloatTensor(data)  # 转换成32位浮点 tensor
    # correct method
    print(
        '\nmatrix multiplication (matmul)',
        '\nnumpy: ', np.matmul(data, data),     # [[7, 10], [15, 22]]
        '\ntorch: ', torch.mm(tensor, tensor)   # [[7, 10], [15, 22]]
    )
    
    # !!!!  下面是错误的方法 !!!!
    data = np.array(data)
    print(
        '\nmatrix multiplication (dot)',
        '\nnumpy: ', data.dot(data),        # [[7, 10], [15, 22]] 在numpy 中可行
        '\ntorch: ', tensor.dot(tensor)     # torch 会转换成 [1,2,3,4].dot([1,2,3,4) = 30.0
    )

     

转载于:https://www.cnblogs.com/CATHY-MU/p/7800771.html

### 兼容的 Numpy 和 PyTorch 版本 为了确保程序能够正常运行,Numpy 和 PyTorch 的版本需要相互兼容。以下是关于如何找到兼容版本的一些指导: #### 1. **PyTorchNumpy 的依赖** PyTorch 官方通常会推荐特定范围内的 Numpy 版本来支持其功能。例如,在某些情况下,当使用较新的 Numpy 版本时,可能会触发类似于 `UserWarning: A NumPy version >=1.17.3 and <1.25.0` 这样的警告消息[^4]。 因此,对于大多数稳定版的 PyTorch 来说,建议使用的 Numpy 版本应满足以下条件: - 至少为 1.17.3 或更高。 - 不超过 1.25.0(具体取决于所使用的 PyTorch 版本)。 #### 2. **常见兼容组合** 下表列出了部分已知的 PyTorchNumpy 的兼容版本组合: | PyTorch Version | Compatible Numpy Versions | |------------------|----------------------------| | 1.8.x | 1.19.x | | 1.9.x | 1.19.x - 1.21.x | | 1.10.x | 1.19.x - 1.21.x | | 1.11.x | 1.19.x - 1.21.x | | 1.12.x | 1.19.x - 1.23.x | | 1.13.x | 1.19.x - 1.23.x | 需要注意的是,这些数据可能并非完全详尽,实际应用中还需要考虑其他库的影响,比如 TorchVision[^2]。 #### 3. **验证当前环境中的版本** 可以通过以下 Python 脚本检查当前环境中安装的 PyTorchNumpy 版本是否一致: ```python import torch import numpy as np print(f"Torch Version: {torch.__version__}") print(f"Numpy Version: {np.__version__}") if not (np.version.version.startswith('1.19') or np.version.version.startswith('1.20') or np.version.version.startswith('1.21')): print("Warning: The current Numpy version may be incompatible with your installed PyTorch.") else: print("The environment seems to have a compatible configuration.") ``` 此脚本可以帮助快速判断是否存在潜在的不兼容问题。 #### 4. **解决 YOLOv5 中的 RuntimeError** 在配置 YOLOv5 环境过程中遇到的 `RuntimeError: Couldn't load custom C++ ops.` 错误可能是由于多个因素引起的,其中包括但不限于 PyTorchTorchVision 的版本冲突[^3]。除了上述提到的内容外,还应注意以下几点: - 如果从源码编译了 TorchVision,则需确认该过程无任何错误发生。 - 尝试清理并重新创建虚拟环境以排除残留文件干扰的可能性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值