hotiffany1
New member
[TIẾNG VIỆT]:
** Lập trình các ứng dụng thông minh với Pytorch + Torchscript **
Pytorch là một khung học tập sâu phổ biến được sử dụng bởi các nhà nghiên cứu và nhà phát triển để xây dựng nhiều ứng dụng thông minh.Torchscript là một trình biên dịch chuyển đổi các mô hình PyTorch thành một định dạng có thể được chạy trên các thiết bị khác nhau, chẳng hạn như điện thoại di động và thiết bị nhúng.Điều này cho phép triển khai các mô hình Pytorch đến môi trường sản xuất mà không phải lo lắng về phần cứng cơ bản.
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng Pytorch và Torchscript để xây dựng một ứng dụng thông minh có thể nhận ra các chữ số viết tay.Chúng tôi sẽ bắt đầu bằng cách tạo một mô hình Pytorch đơn giản có thể phân loại các chữ số viết tay.Sau đó, chúng tôi sẽ sử dụng Torchscript để chuyển đổi mô hình thành một định dạng có thể chạy trên điện thoại di động.Cuối cùng, chúng tôi sẽ triển khai mô hình lên điện thoại di động và hiển thị cách nó có thể được sử dụng để nhận ra các chữ số viết tay.
## 1. Tạo mô hình Pytorch
Để tạo mô hình Pytorch, trước tiên chúng ta cần nhập các mô -đun cần thiết.
`` `Python
nhập khẩu ngọn đuốc
Nhập ngọn đuốc.nn dưới dạng nn
Nhập ngọn đuốc.
`` `
Sau đó chúng tôi sẽ xác định kiến trúc của mô hình của chúng tôi.Trong trường hợp này, chúng tôi sẽ sử dụng một mạng lưới thần kinh tích chập đơn giản (CNN).
`` `Python
Lớp CNN (nn.module):
def __init __ (tự):
Super (CNN, self) .__ init __ ()
self.conv1 = nn.conv2d (1, 32, kernel_size = 3)
self.conv2 = nn.conv2d (32, 64, kernel_size = 3)
self.fc1 = nn.linear (64 * 7 * 7, 128)
self.fc2 = nn.linear (128, 10)
def forward (self, x):
x = self.conv1 (x)
x = Torch.max_pool2d (x, kernel_size = 2)
x = self.conv2 (x)
x = Torch.max_pool2d (x, kernel_size = 2)
x = x.view (-1, 64 * 7 * 7)
x = self.fc1 (x)
x = ngọn đuốc.relu (x)
x = self.fc2 (x)
trả lại x
`` `
Bây giờ chúng ta có thể đào tạo mô hình trên một bộ dữ liệu của các chữ số viết tay.Chúng tôi sẽ sử dụng [Bộ dữ liệu MNIST] (MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges), trong đó chứa 60.000 hình ảnh của chữ số viết tay.
`` `Python
Train_data = Torch.utils.data.dataloader (
Torchvision.datasets.mnist (
"Dữ liệu", Train = true, download = true, transform = torchvision.transforms.totensor ()
)
batch_size = 128,
)
test_data = Torch.utils.data.dataloader (
Torchvision.datasets.mnist (
"Dữ liệu", Train = false, download = true, transform = torchvision.transforms.totensor ()
)
batch_size = 128,
)
model = cnn ()
Tối ưu hóa = Optim.Adam (model.parameter (), lr = 0,001)
Đối với kỷ nguyên trong phạm vi (10):
cho Batch_idx, (dữ liệu, mục tiêu) trong liệt kê (Train_data):
data = data.to (thiết bị)
Target = target.to (thiết bị)
# phía trước
đầu ra = model (dữ liệu)
Mất = f.cross_entropy (đầu ra, mục tiêu)
# phía sau
Tối ưu.Zero_Grad ()
mất.backward ()
atptiminure.Step ()
# đánh giá
với Torch.no_grad ():
đúng = 0
Tổng cộng = 0
Đối với dữ liệu, mục tiêu trong test_data:
data = data.to (thiết bị)
Target = target.to (thiết bị)
đầu ra = model (
[ENGLISH]:
**Programming Intelligent Apps with PyTorch + TorchScript**
PyTorch is a popular deep learning framework that is used by researchers and developers to build a variety of intelligent applications. TorchScript is a compiler that converts PyTorch models into a format that can be run on different devices, such as mobile phones and embedded devices. This makes it possible to deploy PyTorch models to production environments without having to worry about the underlying hardware.
In this article, we will show you how to use PyTorch and TorchScript to build an intelligent app that can recognize handwritten digits. We will start by creating a simple PyTorch model that can classify handwritten digits. We will then use TorchScript to convert the model into a format that can be run on a mobile phone. Finally, we will deploy the model to a mobile phone and show how it can be used to recognize handwritten digits.
## 1. Creating a PyTorch Model
To create a PyTorch model, we need to first import the necessary modules.
```python
import torch
import torch.nn as nn
import torch.optim as optim
```
We will then define the architecture of our model. In this case, we will use a simple convolutional neural network (CNN).
```python
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3)
self.fc1 = nn.Linear(64 * 7 * 7, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.conv1(x)
x = torch.max_pool2d(x, kernel_size=2)
x = self.conv2(x)
x = torch.max_pool2d(x, kernel_size=2)
x = x.view(-1, 64 * 7 * 7)
x = self.fc1(x)
x = torch.relu(x)
x = self.fc2(x)
return x
```
We can now train the model on a dataset of handwritten digits. We will use the [MNIST dataset](http://yann.lecun.com/exdb/mnist/), which contains 60,000 images of handwritten digits.
```python
train_data = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
"data", train=True, download=True, transform=torchvision.transforms.ToTensor()
),
batch_size=128,
)
test_data = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
"data", train=False, download=True, transform=torchvision.transforms.ToTensor()
),
batch_size=128,
)
model = CNN()
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10):
for batch_idx, (data, target) in enumerate(train_data):
data = data.to(device)
target = target.to(device)
# forward
outputs = model(data)
loss = F.cross_entropy(outputs, target)
# backward
optimizer.zero_grad()
loss.backward()
optimizer.step()
# evaluate
with torch.no_grad():
correct = 0
total = 0
for data, target in test_data:
data = data.to(device)
target = target.to(device)
outputs = model(
** Lập trình các ứng dụng thông minh với Pytorch + Torchscript **
Pytorch là một khung học tập sâu phổ biến được sử dụng bởi các nhà nghiên cứu và nhà phát triển để xây dựng nhiều ứng dụng thông minh.Torchscript là một trình biên dịch chuyển đổi các mô hình PyTorch thành một định dạng có thể được chạy trên các thiết bị khác nhau, chẳng hạn như điện thoại di động và thiết bị nhúng.Điều này cho phép triển khai các mô hình Pytorch đến môi trường sản xuất mà không phải lo lắng về phần cứng cơ bản.
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng Pytorch và Torchscript để xây dựng một ứng dụng thông minh có thể nhận ra các chữ số viết tay.Chúng tôi sẽ bắt đầu bằng cách tạo một mô hình Pytorch đơn giản có thể phân loại các chữ số viết tay.Sau đó, chúng tôi sẽ sử dụng Torchscript để chuyển đổi mô hình thành một định dạng có thể chạy trên điện thoại di động.Cuối cùng, chúng tôi sẽ triển khai mô hình lên điện thoại di động và hiển thị cách nó có thể được sử dụng để nhận ra các chữ số viết tay.
## 1. Tạo mô hình Pytorch
Để tạo mô hình Pytorch, trước tiên chúng ta cần nhập các mô -đun cần thiết.
`` `Python
nhập khẩu ngọn đuốc
Nhập ngọn đuốc.nn dưới dạng nn
Nhập ngọn đuốc.
`` `
Sau đó chúng tôi sẽ xác định kiến trúc của mô hình của chúng tôi.Trong trường hợp này, chúng tôi sẽ sử dụng một mạng lưới thần kinh tích chập đơn giản (CNN).
`` `Python
Lớp CNN (nn.module):
def __init __ (tự):
Super (CNN, self) .__ init __ ()
self.conv1 = nn.conv2d (1, 32, kernel_size = 3)
self.conv2 = nn.conv2d (32, 64, kernel_size = 3)
self.fc1 = nn.linear (64 * 7 * 7, 128)
self.fc2 = nn.linear (128, 10)
def forward (self, x):
x = self.conv1 (x)
x = Torch.max_pool2d (x, kernel_size = 2)
x = self.conv2 (x)
x = Torch.max_pool2d (x, kernel_size = 2)
x = x.view (-1, 64 * 7 * 7)
x = self.fc1 (x)
x = ngọn đuốc.relu (x)
x = self.fc2 (x)
trả lại x
`` `
Bây giờ chúng ta có thể đào tạo mô hình trên một bộ dữ liệu của các chữ số viết tay.Chúng tôi sẽ sử dụng [Bộ dữ liệu MNIST] (MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges), trong đó chứa 60.000 hình ảnh của chữ số viết tay.
`` `Python
Train_data = Torch.utils.data.dataloader (
Torchvision.datasets.mnist (
"Dữ liệu", Train = true, download = true, transform = torchvision.transforms.totensor ()
)
batch_size = 128,
)
test_data = Torch.utils.data.dataloader (
Torchvision.datasets.mnist (
"Dữ liệu", Train = false, download = true, transform = torchvision.transforms.totensor ()
)
batch_size = 128,
)
model = cnn ()
Tối ưu hóa = Optim.Adam (model.parameter (), lr = 0,001)
Đối với kỷ nguyên trong phạm vi (10):
cho Batch_idx, (dữ liệu, mục tiêu) trong liệt kê (Train_data):
data = data.to (thiết bị)
Target = target.to (thiết bị)
# phía trước
đầu ra = model (dữ liệu)
Mất = f.cross_entropy (đầu ra, mục tiêu)
# phía sau
Tối ưu.Zero_Grad ()
mất.backward ()
atptiminure.Step ()
# đánh giá
với Torch.no_grad ():
đúng = 0
Tổng cộng = 0
Đối với dữ liệu, mục tiêu trong test_data:
data = data.to (thiết bị)
Target = target.to (thiết bị)
đầu ra = model (
[ENGLISH]:
**Programming Intelligent Apps with PyTorch + TorchScript**
PyTorch is a popular deep learning framework that is used by researchers and developers to build a variety of intelligent applications. TorchScript is a compiler that converts PyTorch models into a format that can be run on different devices, such as mobile phones and embedded devices. This makes it possible to deploy PyTorch models to production environments without having to worry about the underlying hardware.
In this article, we will show you how to use PyTorch and TorchScript to build an intelligent app that can recognize handwritten digits. We will start by creating a simple PyTorch model that can classify handwritten digits. We will then use TorchScript to convert the model into a format that can be run on a mobile phone. Finally, we will deploy the model to a mobile phone and show how it can be used to recognize handwritten digits.
## 1. Creating a PyTorch Model
To create a PyTorch model, we need to first import the necessary modules.
```python
import torch
import torch.nn as nn
import torch.optim as optim
```
We will then define the architecture of our model. In this case, we will use a simple convolutional neural network (CNN).
```python
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3)
self.fc1 = nn.Linear(64 * 7 * 7, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.conv1(x)
x = torch.max_pool2d(x, kernel_size=2)
x = self.conv2(x)
x = torch.max_pool2d(x, kernel_size=2)
x = x.view(-1, 64 * 7 * 7)
x = self.fc1(x)
x = torch.relu(x)
x = self.fc2(x)
return x
```
We can now train the model on a dataset of handwritten digits. We will use the [MNIST dataset](http://yann.lecun.com/exdb/mnist/), which contains 60,000 images of handwritten digits.
```python
train_data = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
"data", train=True, download=True, transform=torchvision.transforms.ToTensor()
),
batch_size=128,
)
test_data = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
"data", train=False, download=True, transform=torchvision.transforms.ToTensor()
),
batch_size=128,
)
model = CNN()
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10):
for batch_idx, (data, target) in enumerate(train_data):
data = data.to(device)
target = target.to(device)
# forward
outputs = model(data)
loss = F.cross_entropy(outputs, target)
# backward
optimizer.zero_grad()
loss.backward()
optimizer.step()
# evaluate
with torch.no_grad():
correct = 0
total = 0
for data, target in test_data:
data = data.to(device)
target = target.to(device)
outputs = model(