sách gpt4 ăn đã đi

PyTorch中的数据集Torchvision和Torchtext

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 41 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

这篇CFSDN的博客文章PyTorch中的数据集Torchvision和Torchtext由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

PyTorch中的数据集Torchvision和Torchtext

对于PyTorch加载和处理不同类型数据,官方提供了torchvision和torchtext.

之前使用 torchDataLoader类直接加载图像并将其转换为张量。现在结合torchvision和torchtext介绍torch中的内置数据集 。

Torchvision 中的数据集

MNIST

MNIST是一个由标准化和中心裁剪的手写图像组成的数据集。它有超过 60,000 张训练图像和 10,000 张测试图像。这是用于学习和实验目的最常用的数据集之一。要加载和使用数据集,使用以下语法导入:torchvision.datasets.MNIST().

Fashion MNIST

Fashion MNIST数据集类似于MNIST,但该数据集包含T恤、裤子、包包等服装项目,而不是手写数字,训练和测试样本数分别为60,000和10,000。要加载和使用数据集,使用以下语法导入:torchvision.datasets.FashionMNIST() 。

CIFAR

CIFAR数据集有两个版本,CIFAR10和CIFAR100。CIFAR10 由 10 个不同标签的图像组成,而 CIFAR100 有 100 个不同的类。这些包括常见的图像,如卡车、青蛙、船、汽车、鹿等.

  1. torchvision.datasets.CIFAR10() 
  2. torchvision.datasets.CIFAR100() 

COCO

COCO数据集包含超过 100,000 个日常对象,如人、瓶子、文具、书籍等。这个图像数据集广泛用于对象检测和图像字幕应用。下面是可以加载 COCO 的位置:torchvision.datasets.CocoCaptions() 。

EMNIST

EMNIST数据集是 MNIST 数据集的高级版本。它由包括数字和字母的图像组成。如果您正在处理基于从图像中识别文本的问题,EMNIST是一个不错的选择。下面是可以加载 EMNIST的位置::torchvision.datasets.EMNIST() 。

IMAGE-NET

ImageNet 是用于训练高端神经网络的旗舰数据集之一。它由分布在 10,000 个类别中的超过 120 万张图像组成。通常,这个数据集加载在高端硬件系统上,因为单独的 CPU 无法处理这么大的数据集。下面是加载 ImageNet 数据集的类:torchvision.datasets.ImageNet() 。

Torchtext 中的数据集

IMDB

IMDB是一个用于情感分类的数据集,其中包含一组 25,000 条高度极端的电影评论用于训练,另外 25,000 条用于测试。使用以下类加载这些数据torchtext:torchtext.datasets.IMDB() 。

WikiText2

WikiText2语言建模数据集是一个超过 1 亿个标记的集合。它是从维基百科中提取的,并保留了标点符号和实际的字母大小写。它广泛用于涉及长期依赖的应用程序。可以从torchtext以下位置加载此数据:torchtext.datasets.WikiText2() 。

除了上述两个流行的数据集,torchtext库中还有更多可用的数据集,例如 SST、TREC、SNLI、MultiNLI、WikiText-2、WikiText103、PennTreebank、Multi30k 等.

深入查看 MNIST 数据集

MNIST 是最受欢迎的数据集之一。现在我们将看到 PyTorch 如何从 pytorch/vision 存储库加载 MNIST 数据集。让我们首先下载数据集并将其加载到名为 的变量中data_train 。

  1. từ torchvision.datasets import MNIST 
  2.  
  3. # Download MNIST  
  4. data_train = MNIST('~/mnist_data', train=ĐÚNG VẬY, download=ĐÚNG VẬY
  5.  
  6. import matplotlib.pyplot BẰNG plt 
  7.  
  8. random_image = data_train[0][0] 
  9. random_image_label = data_train[0][1] 
  10.  
  11. # In hình ảnh bằng Matplotlib 
  12. plt.imshow(hình ảnh ngẫu nhiên) 
  13. in("Nhãn của hình ảnh là:", nhãn_hình_ảnh_ngẫu_nhiên) 

DataLoader tải MNIST

Tiếp theo, chúng ta sử dụng lớp DataLoader để tải tập dữ liệu, như hiển thị bên dưới.

  1. nhập khẩu ngọn đuốc 
  2. từ torchvision nhập khẩu chuyển đổi 
  3.  
  4. data_train = torch.utils.data.DataLoader( 
  5.     MNIST( 
  6.           '~/mnist_data', train=ĐÚNG VẬY, download=ĐÚNG VẬY,  
  7.           biến đổi = biến đổi.Compose([ 
  8.               biến đổi.ToTensor() 
  9.           ])), 
  10.           kích thước lô = 64, 
  11.           xáo trộn=ĐÚNG VẬY 
  12.           ) 
  13.  
  14.  batch_idx, mẫu TRONG liệt kê(dữ liệu_huyền: 
  15.       in(batch_idx, mẫu) 

Đang tải CUDA

Chúng tôi có thể kích hoạt GPU để đào tạo mô hình của mình nhanh hơn. Bây giờ hãy sử dụng cấu hình có thể sử dụng khi tải dữ liệu bằng CUDA (GPU hỗ trợ PyTorch).

  1. thiết bị = "cuda" nếu torch.cuda.is_available() khác "bộ xử lý" 
  2. kwargs = {'số_công_nhân': 1, 'pin_memory'ĐÚNG VẬY} nếu thiết bị =='khác biệt' khác {} 
  3.  
  4. train_loader = torch.utils.data.DataLoader( 
  5.   torchvision.datasets.MNIST('/tập tin/', train=ĐÚNG VẬY, download=ĐÚNG VẬY), 
  6.   batch_size=batch_size_train, **kwargs) 
  7.  
  8. test_loader = torch.utils.data.DataLoader( 
  9.   torchvision.datasets.MNIST('tập tin/', train=SAI, download=ĐÚNG VẬY), 
  10.   batch_size=kích thước_batch, **kwargs) 

Thư mục hình ảnh

ImageFolder là một torchvision lớp trình tải dữ liệu chung giúp tải tập dữ liệu hình ảnh của riêng bạn. Giải quyết vấn đề phân loại và xây dựng mạng lưới thần kinh để xác định xem hình ảnh nhất định là quả táo hay quả cam. Để thực hiện việc này trong PyTorch, bước đầu tiên là sắp xếp các hình ảnh theo cấu trúc thư mục mặc định như sau:

  1. gốc rễ 
  2. ├── màu cam 
  3. │ ├── cam_image1.png 
  4. │ └── cam_image1.png 
  5. ├── quả táo 
  6. │ └── apple_image1.png 
  7. │ └── apple_image2.png 
  8. │ └── apple_image3.png 

Tất cả những hình ảnh này có thể được tải bằng lớp ImageLoader.

  1. torchvision.datasets.ImageFolder(gốc, biến đổi) 

biến đổi

Các phép biến đổi PyTorch xác định các kỹ thuật chuyển đổi hình ảnh đơn giản giúp chuyển đổi toàn bộ tập dữ liệu thành các định dạng duy nhất.

Nếu đó là tập dữ liệu chứa các hình ảnh ô tô khác nhau ở các độ phân giải khác nhau thì trong quá trình đào tạo, tất cả các hình ảnh trong tập dữ liệu huấn luyện của chúng tôi phải có cùng kích thước độ phân giải. Nếu chúng ta chuyển đổi thủ công tất cả hình ảnh sang kích thước đầu vào được yêu cầu thì sẽ tốn thời gian, vì vậy chúng ta có thể sử dụng các phép biến đổi với một vài dòng mã PyTorch, tất cả hình ảnh trong tập dữ liệu của chúng ta có thể được chuyển đổi sang kích thước và độ phân giải đầu vào được yêu cầu.

Bây giờ hãy tải CIFAR10torchvision.datasets và áp dụng các phép biến đổi sau:

  • Thay đổi kích thước tất cả hình ảnh thành 32 × 32
  • Áp dụng chuyển đổi cắt trung tâm cho hình ảnh
  • Chuyển đổi hình ảnh đã cắt thành tensor
  • hình ảnh chuẩn hóa
  1. nhập khẩu ngọn đuốc 
  2. nhập khẩu torchvision 
  3. nhập torchvision.transforms BẰNG biến đổi 
  4. import matplotlib.pyplot BẰNG plt 
  5. nhập numpy BẰNG ví dụ. 
  6.  
  7. biến đổi = biến đổi.Compose([ 
  8.     # thay đổi kích thước 32×32 
  9.     biến đổi.Thay đổi kích thước(32), 
  10.     # chuyển đổi cây trồng trung tâm 
  11.     biến đổi.CenterCrop(32), 
  12.     # ĐẾN-tenxơ 
  13.     biến đổi.ToTensor(), 
  14.     # bình thường hóa bình thường hóa 
  15.     biến đổi.Chuẩn hóa([0,5, 0,5, 0,5], [0,5, 0,5, 0,5]) 
  16. ]) 
  17.  
  18. trainset = torchvision.datasets.CIFAR10(root='./dữ liệu', train=ĐÚNG VẬY
  19.                                         tải về=ĐÚNG VẬY, biến đổi=biến đổi) 
  20. trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, 
  21.                                           xáo trộn=SAI

Tạo bộ dữ liệu tùy chỉnh trong PyTorch

Dưới đây bạn sẽ tạo một tập dữ liệu tùy chỉnh đơn giản bao gồm số và văn bản. Các phương thức __getitem__() và __len__() trong lớp Dataset cần được đóng gói.

  • Phương thức __getitem__() trả về mẫu đã chọn trong tập dữ liệu theo chỉ mục.
  • Phương thức __len__() trả về tổng kích thước của tập dữ liệu.

Sau đây là mã đã đóng gói tập dữ liệu FruitImagesDataset. Về cơ bản, đây là một mẫu tốt hơn để tạo các tập dữ liệu tùy chỉnh trong PyTorch.

  1. nhập khẩu chúng 
  2. nhập numpy BẰNG ví dụ. 
  3. nhập cv2 
  4. nhập khẩu ngọn đuốc 
  5. nhập matplotlib.patches BẰNG các bản vá 
  6. nhập khẩu albumentations BẰNG MỘT 
  7. từ albumentations.pytorch.transforms nhập ToTensorV2 
  8. từ matplotlib nhập pyplot BẰNG plt 
  9. từ torch.utils.data nhập Bộ dữ liệu 
  10. từ xml.etree nhập ElementTree BẰNG Và 
  11. từ torchvision nhập khẩu chuyển đổi BẰNG ngọn đuốc 
  12.  
  13. lớp FruitImagesDataset(torch.utils.data.Dataset): 
  14.     def __init__(self, files_dir, width, height, transforms=None): 
  15.         self.transforms = biến đổi 
  16.         self.files_dir = thư mục_tệp 
  17.         self.height = chiều cao 
  18.         self.width = chiều rộng 
  19.  
  20.  
  21.         self.imgs = [hình ảnh  hình ảnh TRONG đã sắp xếp(os.listdir(files_dir)) 
  22.                      nếu hình ảnh[-4:] == '.jpg'
  23.  
  24.         tự.lớp = ['_','quả táo''chuối''quả cam'
  25.  
  26.     def __getitem__(self, idx): 
  27.  
  28.         img_name = self.imgs[idx] 
  29.         image_path = os.path.tham gia(self.files_dir, tên_hình_ảnh) 
  30.  
  31.         # đọc hình ảnh  chuyển đổi chúng ĐẾN Chính xác kích cỡ  màu sắc 
  32.         img = cv2.imread(đường dẫn hình ảnh) 
  33.         img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float32) 
  34.         img_res = cv2.resize(img_rgb, (self.width, self.height), cv2.INTER_AREA) 
  35.         # lặn qua 255 
  36.         img_res /= 255.0 
  37.  
  38.         # tập tin chú thích 
  39.         chú thích_tên_tệp = img_name[:-4] + '.xml' 
  40.         annot_file_path = os.path.tham gia(self.files_dir, chú thích_tên_tệp) 
  41.  
  42.         hộp = [] 
  43.         nhãn = [] 
  44.         cây = et.parse(annot_file_path) 
  45.         root = cây.getroot() 
  46.  
  47.         # hình ảnh cv2 cung cấp kích cỡ BẰNG chiều cao x chiều rộng 
  48.         wt = img.hình dạng[1] 
  49.         ht = img.hình dạng[0] 
  50.  
  51.         # tọa độ hộp  các tập tin xml được trích xuất  đã sửa  hình ảnh kích cỡ được cho 
  52.          thành viên TRONG root.findall('sự vật'): 
  53.             nhãn.append(self.classes.chỉ số(thành viên.tìm('tên').chữ)) 
  54.  
  55.             # hộp giới hạn 
  56.             xmin = số nguyên(thành viên.tìm('bndbox').tìm thấy('xmin').chữ) 
  57.             xmax = số nguyên(thành viên.tìm('bndbox').tìm thấy('xmax').chữ) 
  58.  
  59.             ymin = số nguyên(thành viên.tìm('bndbox').tìm thấy('ymin').chữ) 
  60.             ymax = số nguyên(thành viên.tìm('bndbox').tìm thấy('ymax').chữ) 
  61.  
  62.             xmin_corr = (xmin / wt) * chiều rộng bản thân 
  63.             xmax_corr = (xmax / wt) * chiều rộng bản thân 
  64.             ymin_corr = (ymin / ht) * chiều cao của bản thân 
  65.             ymax_corr = (ymax / ht) * chiều cao của bản thân 
  66.  
  67.             hộp.append([xmin_corr, ymin_corr, xmax_corr, ymax_corr]) 
  68.  
  69.         # chuyển thành hộp vào trong ngọn đuốc.Tensor 
  70.         hộp = torch.as_tensor(hộp, kiểu dữ liệu = torch.float32) 
  71.  
  72.         # lấy các khu vực của các hộp 
  73.         diện tích = (hộp[:, 3] - hộp[:, 1]) * (hộp[:, 2] - hộp[:, 0]) 
  74.  
  75.         # giả định tất cả các trường hợp là không đám đông 
  76.         iscrowd = torch.zeros((boxes.shape[0],), dtype=torch.int64) 
  77.  
  78.         nhãn = torch.as_tensor(nhãn, kiểu dữ liệu = torch.int64) 
  79.  
  80.         mục tiêu = {} 
  81.         mục tiêu["hộp"] = hộp 
  82.         mục tiêu["nhãn"] = nhãn 
  83.         mục tiêu["khu vực"] = diện tích 
  84.         mục tiêu["là đám đông"] = là đám đông 
  85.         # id_hình_ảnh 
  86.         image_id = torch.tensor([idx]) 
  87.         mục tiêu["id_hình_ảnh"] = id_hình_ảnh 
  88.  
  89.         nếu self.transforms: 
  90.             mẫu = self.transforms(image=img_res, 
  91.                                      bboxes=mục tiêu['hộp'], 
  92.                                      nhãn=nhãn) 
  93.  
  94.             img_res = mẫu['hình ảnh'
  95.             mục tiêu['hộp'] = torch.Tensor(mẫu['hộp thư']) 
  96.         trở lại img_res, mục tiêu 
  97.     định nghĩa __len__(bản thân): 
  98.         trở lại len(self.imgs) 
  99.  
  100. def get_transform(tàu hỏa): 
  101.     nếu tàu hỏa: 
  102.         trở lại A. Soạn([ 
  103.             A.Lật ngang(0,5), 
  104.             ToTensorV2(p=1.0) 
  105.         ], bbox_params={'định dạng''pascal_voc''nhãn_trường': ['nhãn']}) 
  106.     khác
  107.         trở lại A. Soạn([ 
  108.             ToTensorV2(p=1.0) 
  109.         ], bbox_params={'định dạng''pascal_voc''nhãn_trường': ['nhãn']}) 
  110.  
  111. thư mục tập tin = '../input/fruit-images-for-object-detection/train_zip/train' 
  112. test_dir = '../input/fruit-images-for-object-detection/test_zip/test' 
  113.  
  114. tập dữ liệu = FruitImagesDataset(train_dir, 480, 480) 

Liên kết gốc: https://mp.weixin.qq.com/s/vOO7ZXtfoX11PXfwTSjEdw.

Cuối cùng, bài viết này về bộ dữ liệu Torchvision và Torchtext trong PyTorch kết thúc tại đây. Nếu bạn muốn biết thêm về bộ dữ liệu Torchvision và Torchtext trong PyTorch, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. blog trong tương lai! .

41 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress