ディープラーニングの環境を構築する際にかなり手間取ったので、30分くらいで環境を実装する手順を編み出したのでメモとして残しておきます。一応個人の意見だと言うことは把握して活用してください。
Anacondaのダウンロード
Anacondaは、Pythonの機械学習や科学計算などに特化した、パッケージや環境を管理するためのシステムです。簡単にPythonの開発環境を管理でき、パッケージがインストールしやすいと言うメリットがあります。
まずは、以下のリンクから自分のOSに合ったAnacondaのインストーラーをダウンロードしましょう。
ダウンロードが完了したら、インストーラーをクリックしてインストールを行ってください。
Anaconda Prompt で環境の構築
Pythonのインストールが完了したら、開発環境を作成します。Anacondaがダウンロードされるとbase環境のみ存在している状態です。そこで、任意の名前を付けた目的に都合のいいパッケージを搭載した環境を構築すると便利です。自分の場合はphysと言う名前の環境を構築し、ディープラーニングなどを行っています。
まず、検索バーに Anaconda Prompt と入力して、Anaconda Prompt を起動してください。基本的にはアンダーラインのついてるコマンドを順番にコピペして実行すれば必要な環境は構築されます。
次に、開発環境を構築します。名前は何でも良いですが、自分はphysとしておきます。以下のコマンドを実行すると、physと言う開発環境が実装されます。
conda create -n phys
physをアクティベートすると、physに必要なライブラリをインストールできます。
conda activate phys
ライブラリを探しやすくするためチャンネル追加します。以下のコマンドを一括でコピペして実行してください。
conda config –add channels conda-forge
conda config –add channels pytorch
conda config –add channels nvidia
conda config –add channels rusty1s
数値計算系、物理シミュレーション系、ディープラーニング系のライブラリを入れたいが、依存関係が少ないライブラリからインストールしていく方がよい。なので、以下のコマンドを順番にコピペして実行してください。
基本ライブラリ
conda install pip numpy scipy sympy pandas matplotlib seaborn plotly tqdm
機械学習ライブラリ
conda install scikit-learn xgboost lightgbm
PyTorchライブラリ
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
PyTorchの拡張
conda install torch-geometric -c rusty1s -c conda-forge
計算系ライブラリ
conda install optuna transformers quimb qutip -c conda-forge
可視化ライブラリ
conda install -c conda-forge plotnine holoviews -c conda-forge
Spyder用のカーネルでスパイダーに認識させる
conda install spyder-kernels=2.5
以上のライブラリを全てインストールすると快適にディープラーニングできる環境が構築されます。
Spyderの設定
Spyderに構築した環境を読み込ませます。今回はphysを読み込ませたいので、以下の手順を実行すると良いでしょう。
Spyderを開く→ツール → 設定→Pythonインタープリタ→
C:/Users/ユーザー名/anaconda3/envs/phys/python.exe
適用→
上記の設定が終了すれば、一度Spiderを閉じてから開き直すと構築した環境を読み込んでいるはずです。以上でSpyderでPythonによるディープラーニングを行うことが可能となります。
学習のテスト
せっかくディープラーニングの環境を構築したので、以下のコードをSpyderにコピペして実行してみましょう。
import torch
import networkx as nx
import matplotlib.pyplot as plt
from torch_geometric.data import Data
from torch_geometric.nn import GCNConv
from sklearn.manifold import TSNE
# 1.量子もつれネットワークの作成
edge_index = torch.tensor([[0, 1, 2, 3, 4, 0, 2, 3],
[1, 2, 3, 4, 0, 2, 3, 4]], dtype=torch.long)
edge_attr = torch.tensor([0.8, 0.5, 0.6, 0.7, 0.9, 0.4, 0.3, 0.6], dtype=torch.float)
# 5ノード, 3次元の初期特徴量
x = torch.rand((5, 3))
# PyTorch Geometric の Data オブジェクト
data = Data(x=x, edge_index=edge_index, edge_attr=edge_attr)
# 2.GNN モデルの定義
class GNN(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = GCNConv(3, 4) # 入力3次元 → 隠れ層4次元
self.conv2 = GCNConv(4, 2) # 隠れ層4次元 → 出力2次元(埋め込み)
def forward(self, x, edge_index):
x = self.conv1(x, edge_index).relu()
x = self.conv2(x, edge_index)
return x
model = GNN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# 3.GNN の学習
for epoch in range(100):
optimizer.zero_grad()
out = model(data.x, data.edge_index)
loss = torch.norm(out) # 仮の損失関数(最適化のため)
loss.backward()
optimizer.step()
# 埋め込みベクトルの出力
print("GNN 埋め込みベクトル:")
print(out.detach().numpy())
# 4.量子もつれネットワークの可視化
G = nx.Graph()
for i in range(edge_index.shape[1]):
G.add_edge(int(edge_index[0, i]), int(edge_index[1, i]), weight=float(edge_attr[i]))
plt.figure(figsize=(5, 5))
pos = nx.spring_layout(G)
edges = G.edges(data=True)
weights = [d["weight"] for (u, v, d) in edges]
nx.draw(G, pos, with_labels=True, node_color='lightblue', edge_color=weights, edge_cmap=plt.cm.Blues, width=2)
plt.title("量子もつれネットワーク")
plt.show()
# 5.学習後の埋め込みを可視化
# t-SNE の perplexity をサンプル数未満に設定
tsne = TSNE(n_components=2, perplexity=3, random_state=42) # perplexity はサンプル数未満に
node_embeddings_2d = tsne.fit_transform(out.detach().numpy())
plt.figure(figsize=(5, 5))
plt.scatter(node_embeddings_2d[:, 0], node_embeddings_2d[:, 1], c='red')
for i, txt in enumerate(range(5)):
plt.annotate(txt, (node_embeddings_2d[i, 0], node_embeddings_2d[i, 1]))
plt.title("GNN 学習後のノード埋め込み")
plt.show()
このプログラムの意味はは、量子もつれのネットワーク構造を グラフニューラルネットワーク(GNN) を使って学習し、その結果から時空の幾何構造を再構築しようという試みです。量子もつれの情報が時空の曲率や距離に関与しているという仮説に基づいて、量子力学と重力の統一を目指した最前線の研究に関連しています。
つまり、量子もつれが持つ構造的な情報を使って、時空の性質を学習し、理論的な枠組みの中で時空の再構築を試みるモデルを構築する試みです。
上手くプログラムが起動すれば、学習結果とグラフが出るはずです。
まとめ
今回はディープラーニングに必要な環境を構築して、試しに実装して動かしてみるところまでやりました。ChatGPTに○○のコードを書いてと入力すると色々コードを書いてくれて便利です。
コメント