Update app.py
Browse files
app.py
CHANGED
|
@@ -208,7 +208,9 @@ if __name__ == '__main__':
|
|
| 208 |
gradio_thread.join()
|
| 209 |
flask_thread.join()
|
| 210 |
'''
|
|
|
|
| 211 |
|
|
|
|
| 212 |
from ultralytics import YOLO
|
| 213 |
|
| 214 |
# Load a model
|
|
@@ -218,3 +220,64 @@ model = YOLO("yolov8n.yaml").load("yolov8n.pt") # build from YAML and transfer
|
|
| 218 |
|
| 219 |
# Train the model
|
| 220 |
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
gradio_thread.join()
|
| 209 |
flask_thread.join()
|
| 210 |
'''
|
| 211 |
+
#############################
|
| 212 |
|
| 213 |
+
'''
|
| 214 |
from ultralytics import YOLO
|
| 215 |
|
| 216 |
# Load a model
|
|
|
|
| 220 |
|
| 221 |
# Train the model
|
| 222 |
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
|
| 223 |
+
'''
|
| 224 |
+
|
| 225 |
+
|
| 226 |
+
import torch
|
| 227 |
+
import torch.nn as nn
|
| 228 |
+
import torch.optim as optim
|
| 229 |
+
from torchvision import datasets, transforms
|
| 230 |
+
from torch.utils.data import DataLoader
|
| 231 |
+
|
| 232 |
+
# 定义模型
|
| 233 |
+
class SimpleCNN(nn.Module):
|
| 234 |
+
def __init__(self, num_classes=10):
|
| 235 |
+
super(SimpleCNN, self).__init__()
|
| 236 |
+
self.conv1 = nn.Conv2d(1, 20, 5, 1)
|
| 237 |
+
self.conv2 = nn.Conv2d(20, 50, 5, 1)
|
| 238 |
+
self.fc1 = nn.Linear(4*4*50, 500)
|
| 239 |
+
self.fc2 = nn.Linear(500, num_classes)
|
| 240 |
+
|
| 241 |
+
def forward(self, x):
|
| 242 |
+
x = torch.relu(self.conv1(x))
|
| 243 |
+
x = torch.max_pool2d(x, 2, 2)
|
| 244 |
+
x = torch.relu(self.conv2(x))
|
| 245 |
+
x = torch.max_pool2d(x, 2, 2)
|
| 246 |
+
x = x.view(-1, 4*4*50)
|
| 247 |
+
x = torch.relu(self.fc1(x))
|
| 248 |
+
x = self.fc2(x)
|
| 249 |
+
return x
|
| 250 |
+
|
| 251 |
+
# 加载数据集
|
| 252 |
+
transform = transforms.Compose([
|
| 253 |
+
transforms.ToTensor(),
|
| 254 |
+
transforms.Normalize((0.5,), (0.5,))
|
| 255 |
+
])
|
| 256 |
+
|
| 257 |
+
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
|
| 258 |
+
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
|
| 259 |
+
|
| 260 |
+
# 初始化模型和优化器
|
| 261 |
+
model = SimpleCNN(num_classes=10)
|
| 262 |
+
optimizer = optim.Adam(model.parameters(), lr=0.001)
|
| 263 |
+
criterion = nn.CrossEntropyLoss()
|
| 264 |
+
|
| 265 |
+
# 训练模型
|
| 266 |
+
num_epochs = 5
|
| 267 |
+
for epoch in range(num_epochs):
|
| 268 |
+
for i, (images, labels) in enumerate(train_loader):
|
| 269 |
+
# 前向传播
|
| 270 |
+
outputs = model(images)
|
| 271 |
+
loss = criterion(outputs, labels)
|
| 272 |
+
|
| 273 |
+
# 反向传播和优化
|
| 274 |
+
optimizer.zero_grad()
|
| 275 |
+
loss.backward()
|
| 276 |
+
optimizer.step()
|
| 277 |
+
|
| 278 |
+
if (i+1) % 100 == 0:
|
| 279 |
+
print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item():.4f}')
|
| 280 |
+
|
| 281 |
+
# 保存模型(可选)
|
| 282 |
+
torch.save(model.state_dict(), 'model.pth')
|
| 283 |
+
|