โค้ด ฝึกสอน คอมพิวเตอร์ธรรมดาให้เป็น AI สเป็กเครื่อง DDR4 16GB มากกว่านี้ได้ CPU i5 โค้ดเป็นทดสอบสอน Ai
ลิงค์ฝึก Ai
https://m.pantip.com/topic/44103814
i# ติดตั้งก่อน 1 ครั้ง
# pip install torch --index-url
https://download.pytorch.org/whl/cu118
# pip install numpy scikit-learn matplotlib
import torch
import torch.nn as nn
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
# ══════════════════════════════
# ตรวจสอบ GPU (GTX 1060)
# ══════════════════════════════
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"ใช้: {torch.cuda.get_device_name(0) if device.type == 'cuda' else 'CPU'}")
# ══════════════════════════════
# เตรียมข้อมูล
# ══════════════════════════════
data = load_iris()
X, y = data.data.astype(np.float32), data.target
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.2, random_state=42, stratify=y
)
X_train_t = torch.tensor(X_train).to(device)
X_test_t = torch.tensor(X_test).to(device)
y_train_t = torch.tensor(y_train).to(device)
y_test_t = torch.tensor(y_test).to(device)
# ══════════════════════════════
# สร้างโมเดล + ส่งขึ้น GPU
# ══════════════════════════════
model = nn.Sequential(
nn.Linear(4, 64), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(64, 32), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(32, 3)
).to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
# ══════════════════════════════
# ฝึกบน GPU
# ══════════════════════════════
for epoch in range(300):
model.train()
optimizer.zero_grad()
loss = criterion(model(X_train_t), y_train_t)
loss.backward()
optimizer.step()
if (epoch + 1) % 50 == 0:
model.eval()
with torch.no_grad():
acc = (model(X_test_t).argmax(1) == y_test_t).float().mean()
print(f"Epoch {epoch+1:>3} | Loss: {loss.item():.4f} | Acc: {acc:.2%}")
# ══════════════════════════════
# ผลลัพธ์
# ══════════════════════════════
model.eval()
with torch.no_grad():
preds = model(X_test_t).argmax(1).cpu().numpy()
print()
print(classification_report(y_test, preds, target_names=data.target_names))
python ฝึกสอน Ai ด้วย GTX1060 6Gb
ลิงค์ฝึก Ai https://m.pantip.com/topic/44103814
i# ติดตั้งก่อน 1 ครั้ง
# pip install torch --index-url https://download.pytorch.org/whl/cu118
# pip install numpy scikit-learn matplotlib
import torch
import torch.nn as nn
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
# ══════════════════════════════
# ตรวจสอบ GPU (GTX 1060)
# ══════════════════════════════
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"ใช้: {torch.cuda.get_device_name(0) if device.type == 'cuda' else 'CPU'}")
# ══════════════════════════════
# เตรียมข้อมูล
# ══════════════════════════════
data = load_iris()
X, y = data.data.astype(np.float32), data.target
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.2, random_state=42, stratify=y
)
X_train_t = torch.tensor(X_train).to(device)
X_test_t = torch.tensor(X_test).to(device)
y_train_t = torch.tensor(y_train).to(device)
y_test_t = torch.tensor(y_test).to(device)
# ══════════════════════════════
# สร้างโมเดล + ส่งขึ้น GPU
# ══════════════════════════════
model = nn.Sequential(
nn.Linear(4, 64), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(64, 32), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(32, 3)
).to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
# ══════════════════════════════
# ฝึกบน GPU
# ══════════════════════════════
for epoch in range(300):
model.train()
optimizer.zero_grad()
loss = criterion(model(X_train_t), y_train_t)
loss.backward()
optimizer.step()
if (epoch + 1) % 50 == 0:
model.eval()
with torch.no_grad():
acc = (model(X_test_t).argmax(1) == y_test_t).float().mean()
print(f"Epoch {epoch+1:>3} | Loss: {loss.item():.4f} | Acc: {acc:.2%}")
# ══════════════════════════════
# ผลลัพธ์
# ══════════════════════════════
model.eval()
with torch.no_grad():
preds = model(X_test_t).argmax(1).cpu().numpy()
print()
print(classification_report(y_test, preds, target_names=data.target_names))