當前位置: 妍妍網 > 碼農

conda、anaconda、pip、pytorch、tensorflow有什麽關聯?

2024-01-22碼農

知乎上有人問,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
    # 定義模型
    classLinearRegressionModel(nn.Module):
    def__init__(self, input_dim, output_dim):
    super(LinearRegressionModel, self).__init__()
    self.linear = nn.Linear(input_dim, output_dim)
    defforward(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)

    其實還有很多鼎鼎大名的第三方庫,就不一一贅述。

    加入知識星球【我們談論數據科學】

    600+小夥伴一起學習!