IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

ERREUR Python int too large to convert to C long


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut ERREUR Python int too large to convert to C long
    Bonjour,
    Sur la base de la vidéo de Sébastien COLLET DeepLearning pour le traitement du langage avec PyTorch
    Le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    # Import des librairies
    # ------------------------------------------------
    import torchtext            # traitement du texte
    import torch
    import torch.nn as nn
    import torch.optim as optim # optimizer
    from torchtext.data import Field, TabularDataset, BucketIterator
     
    import sys
     
    # Tokenization
    # ------------------------------------------------
    import spacy
    spacy_en = spacy.load('en')
     
     
    def tokenizer(text): # create a tokenizer function
        return [tok.text for tok in spacy_en.tokenizer(text)]
     
    # Definition des prétraitements sur le texte
    # ------------------------------------------------
    TEXT = Field(sequential = True, lower=True, include_lengths = False,
                      pad_token = "<pad>", unk_token = "<unk>",
                      batch_first = True, tokenize = tokenizer)
     
    LABELS = Field(sequential=False, use_vocab=False)
     
    # Création des datasets
    # ------------------------------------------------
    train_dataset, test_dataset = TabularDataset.splits(
        path='C:/Users/et/eclipse-workspace/S_COLLET/DevoxxFR-17-04-2019/data/', format='tsv',
        train='data_train', test='data_test',
        fields=[('text', TEXT), ('labels', LABELS)])
    délivre le message d'erreur OverflowError: Python int too large to convert to C long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    ---------------------------------------------------------------------------
    OverflowError                             Traceback (most recent call last)
    <ipython-input-20-d103382ebadc> in <module>
         34     path='C:/Users/et/eclipse-workspace/S_COLLET/DevoxxFR-17-04-2019/data/', format='tsv',
         35     train='data_train', test='data_test',
    ---> 36     fields=[('text', TEXT), ('labels', LABELS)])
     
    ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in splits(cls, path, root, train, validation, test, **kwargs)
         76             path = cls.download(root)
         77         train_data = None if train is None else cls(
    ---> 78             os.path.join(path, train), **kwargs)
         79         val_data = None if validation is None else cls(
         80             os.path.join(path, validation), **kwargs)
     
    ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in __init__(self, path, format, fields, skip_header, csv_reader_params, **kwargs)
        269                 next(reader)
        270 
    --> 271             examples = [make_example(line, fields) for line in reader]
        272 
        273         if isinstance(fields, dict):
     
    ~\Anaconda3\lib\site-packages\torchtext\data\dataset.py in <listcomp>(.0)
        269                 next(reader)
        270 
    --> 271             examples = [make_example(line, fields) for line in reader]
        272 
        273         if isinstance(fields, dict):
     
    ~\Anaconda3\lib\site-packages\torchtext\utils.py in unicode_csv_reader(unicode_csv_data, **kwargs)
        128             maxInt = int(maxInt / 10)
        129 
    --> 130     csv.field_size_limit(sys.maxsize)
        131 
        132     if six.PY2:
     
    OverflowError: Python int too large to convert to C long
    Je comprend qu'il me faut définir un maxsize

    Des discussions évoquent l'influence de la plateforme (je suis sous Windows 64 bit), et l'utilisation de dtype='int64' ou dtype=np.int64
    Le type int utilise un C long, qui est toujours 32-bit sous Windows
    Perso je ne comprends pas comment utiliser ces infos pour traiter l'erreur.
    Pouvez-vous m'aiguiller SVP ?
    Alain

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    C'est possiblement un bug dans la bibliothèque torchtext.
    Et si d'autres sont tombés dedans, un peu de recherche sur Internet devrait vous donner des solutions. A défaut, ceux qui développent, on peut être une buglist ou un chat...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Merci wiztricks,
    J'ai mis la main sur la solution en associant le motclé torchtext dans ma recherche

    Dans le fichier torchtext\utils.py ligne 130
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Remplacer 
    csv.field_size_limit(sys.maxsize)
    par 
    csv.field_size_limit(maxInt)

Discussions similaires

  1. [Python 2.X] long int too large to convert to float
    Par Sh0rtY dans le forum Général Python
    Réponses: 7
    Dernier message: 25/06/2014, 11h48
  2. Erreur: Texture data too large for graphics device
    Par j_ere_my dans le forum Images
    Réponses: 2
    Dernier message: 31/03/2010, 12h36
  3. [TPW][Débutant] Erreur "Data segment too large"
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 08/04/2008, 20h35
  4. Erreur de "Procedure too large"
    Par Tintou dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/05/2007, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo