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 |
+
|