Dávkovacia problém s dataloader v jazyku python

0

Otázka

Mám nejaké údaje .txt a inštancie vytvorené dva riadky, ktoré obsahujú 100 prvkov v nich. Prvý riadok definuje problém a druhom riadku definuje riešenie. Aj keď nie je skvelý nápad, snažil som sa používať pod dohľadom nastavenie medzi údajov. Som však čelí problémom s dávkovacej. Som pridali kód pre data loader a hlavné na slučke, ktorá robí svoju prácu. Problém, ktorý som si to;

Som nastaviť batch_size ako 5 a preds pole má správny tvar. Avšak, označenia pole má ešte jeden rozmer, a namiesto toho, 5 celé čísla v ňom, má 5 kompletné riešenia problémov. Verím, že problém je v data loader, ale nemohol ho vyriešiť. Som celkom nový koncept, som sa snažil nájsť to viac ako týždeň, ale nič nemá vysporiadané tak ďaleko. akákoľvek pomoc ocenia.

vďaka vopred.

Data Loader:

import os
import torch
import torch.nn as nn
import torch.nn.functional as F
import pdb
import numpy as np
from torch.utils.data import Dataset

class load_dataset(Dataset):
    def __init__(self, data_file='data.txt', transform=None):
        super().__init__()
        data = np.loadtxt(data_file)        
        data = torch.Tensor(data)
        self.data = data[::2]
        self.targets = data[1::2]

    def __len__(self):
        return len(self.targets)

    def __getitem__(self, index):
        adj, target = self.data[index], self.targets[index]
        return adj, target

Hlavnej Slučke:

for inputs, labels in loaders["train"]:
    inputs, labels = inputs.view([batch_size, N ** 2]), labels.data
    scores = mps(inputs)
    _, preds = torch.max(scores, 1)
    print("preds: ")
    print(preds)
    print("labels: ")
    print(labels)

Výstup:

   preds: 
   tensor([0, 0, 0, 0, 0])
   labels: 
   tensor([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.,
            0., 1., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
           [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,
            0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
           [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
            0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
           [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,
            0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,
            0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
           [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
            0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]])
1
1

Nie ste ukázali, ako ste definovali svoj dataloader, ale za predpokladu, že ste balenie load_dataset s torch.utils.data.DataLoader a nastavenie batch_size=5.

Ak nastavíte veľkosť šarže 5potom budete mať 5 "problémy" a zodpovedajúce 5 "riešenia" v jednej dávke. Každý má 100 komponentov. To znamená, inputs a labels budú dve ansi tvare (batch_size=5, 100).

2021-10-21 19:41:47

ďakujeme, že ste @Ivan prvé, je vaša predpoklady sú pravdivé. avšak, nie je dávkovacia je všetko asi v prvom rade? Myslel som si, že by sa rozdeliť do 1 stupňa údajov aj jeho kusov. Mám rovnaký výstup rozmeru textu (jeho 100).
bidon

Možno som niečo chýba, ale vám vysvetlil, že problém by mohol byť opísaný o 100 komponentov, pre mňa to 100-funkcia vektorov zodpovedá model textu, správne? Alebo sa jeden problém zodpovedať viacero (100 rôznych) výstupy?
Ivan

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................