深度学习初学者使用TensorFlow框架还是pytorch框架更合适呢

就目前而言,深度学习初学者使用TensorFlow框架还是pytorch框架更合适呢?

pytorch,如果有折腾的能力就去tf。
原因就是pytorch几年前的代码,你用新版本跑基本上问题不大(只要不用torch2.x的去跑1.x的代码,改动不会很大),最多改几个numpy或者弃用的api,cuda兼容也好。tf那就不一样了,30系和40系的新显卡你想跑tf1.x的代码,cuda都能卡你很久(这两个要cuda11.0,tf1.x的版本基本上最高支持到cuda10.2,有些方法可以在cuda11.0下面跑,但是你要自己折腾还不一定成功),更不用说配套的环境,某些库小版本不一样都能有莫名其妙的错误等着你

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7738165
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:pytorch与Tensorflow哪个更适用工业应用呢?
  • 除此之外, 这篇博客: 最热深度学习框架TensorFlow和PyTorch,哪一款才是你的菜中的 TensorFlow和PyTorch发展历程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    TensorFlow的前身是2011年GoogleBrain内部孵化项目DistBelief,这是一个为深度神经网络构建的机器学习系统。经过Google内部的锤炼后,在2015年11月9日,以ApacheLicense2.0的开源协议对外发布了TensorFlow,并于2017年2月发布了1.0.0版本,这标志着TensorFlow稳定版的诞生。2018年9月TensorFlow1.2版本发布,将Keras融入TensorFlow,作为TensorFlow的高级API,这也标志着TensorFlow在面向数百万新用户开源的道路上迈出重要的一步。2019年9月正式发布TensorFlow2.0 版本,紧接着在11月,公布了TensorFlow2.1 的RC版本,兼容之前的流行库,并还引入了众多新库,使得TensorFlow的功能空前强大。

    相比较而言,PyTorch则比较年轻。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,并于2018年5月正式公布PyTorch1.0 版本,这个新的框架将PyTorch0.4 与贾扬清的Caffe2合并,并整合ONNX格式,让开发者可以无缝地将AI模型从研究转到生产,而无需处理迁移。最新版PyTorch1.3 于2019年10月上线,更新增加了很多的新特性,包括无缝移动设备部署、量化模型以加速推断、前端改进(如对张量进行命名和创建更干净的代码)等,PyTorch官方同时还开源了很多新工具和库,使得PyTorch的众多功能向TensorFlow趋同,同时保有自身原有特性,竞争力得到极大增强。

     

  • 您还可以看一下 唐宇迪老师的深度学习框架-PyTorch实战课程中的 补充:常见tensor格式小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    对于深度学习初学者来说,选择使用TensorFlow还是PyTorch框架,可以根据以下几个方面进行考虑:

    1. 易学性与操作性 TensorFlow1使用静态图机制,PyTorch使用动态图机制。静态图的构建和实际计算分开完成,而动态图的构建和实际计算同时发生。对于初学者来说,动态图机制更加直观和易于理解。因此,PyTorch在易学性上有一定优势。

    2. 文档与社区支持 TensorFlow是由Google支持的开源框架,具有庞大的社区和完善的文档支持。PyTorch也有活跃的社区和文档支持,但相对较小。对于初学者来说,选择拥有更全面文档和更活跃社区的框架可能更容易获得帮助和解决问题。

    3. 编程风格与灵活性 TensorFlow倾向于采用命令式编程风格,通过构建计算图来定义神经网络的计算过程。而PyTorch倾向于采用函数式编程风格,使用动态计算图来定义神经网络。对于初学者来说,函数式编程风格更加简洁和直观。此外,PyTorch也更加灵活,可以更容易地进行模型的定制和调试。

    综合上述因素,对于深度学习初学者来说,我建议选择PyTorch框架作为入门的首选。它具有更易学易用的动态图机制、较小但活跃的社区和文档支持,以及灵活的编程风格。同时,TensorFlow也是一种广泛使用的框架,学习它也会对未来的深度学习学习和职业发展有帮助。以下是一个使用PyTorch进行线性回归模型的示例代码:

    import torch
    
    # 定义线性回归模型
    class LinearRegressionPyTorch(torch.nn.Module):
      def __init__(self):
        super().__init__()
        self.w = torch.nn.Parameter(torch.Tensor(1, 1).uniform_(-0.1, 0.1))
        self.b = torch.nn.Parameter(torch.Tensor(1).uniform_(-0.1, 0.1))
    
      def forward(self, x):
        return x @ self.w + self.b
    
    # 创建模型实例
    model = LinearRegressionPyTorch()
    
    # 定义损失函数和优化器
    criterion = torch.nn.MSELoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
    
    # 训练模型
    for epoch in range(100):
      inputs = torch.tensor(...)  # 输入数据
      targets = torch.tensor(...)  # 目标值
    
      # 前向传播
      outputs = model(inputs)
    
      # 计算损失
      loss = criterion(outputs, targets)
    
      # 反向传播和参数优化
      optimizer.zero_grad()
      loss.backward()
      optimizer.step()
    
    # 使用模型进行预测
    inputs = torch.tensor(...)  # 输入数据
    predictions = model(inputs)
    

    上述代码展示了PyTorch框架中实现线性回归模型的基本步骤,包括定义模型、损失函数和优化器,以及训练和使用模型进行预测。通过学习和实践类似的示例代码,初学者可以逐步掌握深度学习模型的构建和训练过程。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^