知乎上有人问,conda、anaconda、pip、torch、pytorch、tensorflow到底是什么东西?
对于那些做数据分析的Python初学者来说,这还真是个问题,有点傻傻分不清。
我画了一张图,可以大致看出它们的区别和关联。
pytorch、tensorflow都是Python的第三方库,相当于封装的代码工具集库,通过import导入使用。
这两个都是深度学习框架,用来搭建AI模型什么的,使用范围非常之广,几乎科研/互联网公司都在用。
conda、pip是Python的包管理器,用来管理pytorch、tensorflow等第三方库,比如下载、安装、更新等。
另外conda还用来创建虚拟环境,和enev库类似。
Anaconda是专门用于数据科学的Python发行版本(垂直版),它包含了Python、conda、上百个数据科学第三方库等,是一个大而全的Python数据科学百宝盒
因此可以这样理解,Anaconda包含conda、pip、torch、pytorch、tensorflow,而conda、pip用来管理torch、pytorch、tensorflow这些第三方库
下面讲讲这些工具的安装和基础使用。
Anaconda
Anaconda安装很简单,直接去官网下载个exe文件,一路next安装到本地即可(最好非C盘)
conda
如果你安装了Anaconda,那么conda会配套一起安装好,无需你再操心
conda两个核心功能,一是管理第三方库,而是搭建虚拟环境
- 安装第三方库 以安装numpy库为例,直接在命令行输入
conda install numpy
- 更新第三方库
conda update numpy
- 删除第三方库
conda remove numpy
- 创建虚拟环境 方便隔离不同项目的依赖项。例如,创建一个名为myenv的虚拟环境,并指定Python版本为3.8
conda create -n myenv python=3.8
- 激活虚拟环境
activate myenv
- 退出虚拟环境
deactivate
pip
pip专门用于管理第三方库,Python会自带pip,无需你再次安装
pip的使用方法和conda类似,比如pip install numpy
pytorch
pytorch是facebook开发的深度学习框架,而且是开源的。
pytorch主要用来构建深度学习模型,比如卷积神经网络、自然语言处理,最近大火的openai chatgpt也是基于pytorch建模的。
Anaconda已经自带pytoch,只需你做一些简单的配置就可以使用。
以下是简单的PyTorch代码示例,用于创建一个简单的神经网络进行线性回归。
import torch import torch.nn as nn import torch.optim as optim # 定义模型 class LinearRegressionModel(nn.Module): def __init__(self, input_dim, output_dim): super(LinearRegressionModel, self).__init__() self.linear = nn.Linear(input_dim, output_dim) def forward(self, x): out = self.linear(x) return out # 定义超参数 input_dim = 1 output_dim = 1 learning_rate = 0.01 num_epochs = 100 # 创建模型、损失函数和优化器 model = LinearRegressionModel(input_dim, output_dim) criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=learning_rate) # 训练模型 for epoch in range(num_epochs): # 假设我们有一些输入数据x和目标数据y x = torch.randn(100, input_dim) y = 3 * x + torch.randn(100, output_dim) # 前向传播 outputs = model(x) loss = criterion(outputs, y) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() if (epoch + 1) % 10 == 0: print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch + 1, num_epochs, loss.item()))
Tensorflow
Tensorflow是谷歌开发的开源深度学习框架,和pytorch一样,都是用来搭建深度学习模型。
前几年很出名的Deepmind公司AlphaGo,就是基于Tensorflow开发的。
以下是一个简单的TensorFlow代码示例,用于创建一个简单的神经网络进行分类:
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # 构建模型 model = keras.Sequential([ layers.Dense(64, activation='relu', input_shape=(10,)), layers.Dense(32, activation='relu'), layers.Dense(10, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(x_train, y_train, epochs=10)