欢迎光临
我们一直在努力

AI大模型和AI的训练示范

import torch

import torch.nn as nn

import torch.optim as optim

from torch.utils.data import DataLoader, TensorDataset

from sklearn.datasets import make_classification

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

 

# ———- 1. 生成模拟数据(替换成你的真实数据) ———-

X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

# 标准化(对神经网络很重要)

scaler = StandardScaler()

X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)

 

# 转为PyTorch张量

X_train_t = torch.tensor(X_train, dtype=torch.float32)

y_train_t = torch.tensor(y_train, dtype=torch.long)

X_test_t = torch.tensor(X_test, dtype=torch.float32)

y_test_t = torch.tensor(y_test, dtype=torch.long)

 

# 创建DataLoader

train_loader = DataLoader(TensorDataset(X_train_t, y_train_t), batch_size=32, shuffle=True)

 

# ———- 2. 定义模型结构 ———-

class MLP(nn.Module):

    def __init__(self, input_dim, hidden_dim=64, output_dim=2):

        super().__init__()

        self.net = nn.Sequential(

            nn.Linear(input_dim, hidden_dim),

            nn.ReLU(),

            nn.Linear(hidden_dim, hidden_dim // 2),

            nn.ReLU(),

            nn.Linear(hidden_dim // 2, output_dim)

        )

 

    def forward(self, x):

        return self.net(x)

 

model = MLP(input_dim=20)

 

# ———- 3. 训练配置 ———-

criterion = nn.CrossEntropyLoss()

optimizer = optim.Adam(model.parameters(), lr=0.001)

 

# ———- 4. 训练循环 ———-

epochs = 50

for epoch in range(epochs):

    model.train()

    total_loss = 0

    for batch_x, batch_y in train_loader:

        optimizer.zero_grad()

        outputs = model(batch_x)

        loss = criterion(outputs, batch_y)

        loss.backward()

        optimizer.step()

        total_loss += loss.item()

    

    if (epoch + 1) % 10 == 0:

        print(f"Epoch {epoch+1}/{epochs}, Loss: {total_loss/len(train_loader):.4f}")

 

# ———- 5. 评估 ———-

model.eval()

with torch.no_grad():

    logits = model(X_test_t)

    preds = torch.argmax(logits, dim=1)

    acc = (preds == y_test_t).float().mean()

    print(f"Test Accuracy: {acc:.4f}")

 

# ———- 6. 推理(对新样本预测) ———-

def predict(new_data):

    model.eval()

    with torch.no_grad():

        new_data_scaled = scaler.transform(new_data)

        tensor_data = torch.tensor(new_data_scaled, dtype=torch.float32)

        logits = model(tensor_data)

        probs = torch.softmax(logits, dim=1)

        return probs.numpy()

 

# 示例:预测一条新数据

sample = X_test[0:1]  # 用测试集第一条模拟新数据

print("预测概率:", predict(sample))

 

 

 

 

模型训练例

# 例:使用预训练的ResNet进行图像分类
from torchvision import models, transforms
resnet = models.resnet18(pretrained=True)
resnet.eval()

# 例:使用HuggingFace的文本分类模型
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("I love this AI!")
print(result)

 

求三连呀。

赞(0)
未经允许不得转载:171主机测评 » AI大模型和AI的训练示范
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址