Fehlermeldung in Python "invalid literal for int() with base 10"

EmmaM95

Mitglied
Hallo, ich habe hier folgenden Code (nur ein Teil der gesamten Klasse) und bekomme eine Fehlermeldung. Habe schon sämtliche Foren durchgeschaut und immer noch keine Lösung:
Code:
def get_imgAndlabel_list(filename, img_folder):
    """
    :param filename:
     each line in filename is img_name \space label
    :return:
    img names list
    label list
    """
    f = open(filename, 'r')
    lines = f.readlines()
    f.close()
    imgname_lists = []
    for i in range(len(lines)):
        img_name = lines[i].split()[0]
        imgname_lists.append(os.path.join(img_folder, img_name))
    return imgname_lists


def get_imgAndlabel_list2(filename, img_folder):
    """
    :param img_folder:
    :param filename:
     each line in filename is img_name \space label
    :return:
    img names list
    label list
    """
    f = open(filename, 'r')
    lines = f.readlines()
    f.close()
    imgname_lists = []
    label_lists = []
    for i in range(len(lines)):
        img_name, label = lines[i].split()
        imgname_lists.append(os.path.join(img_folder, img_name))
        label_lists.append(int(label))

    return imgname_lists, label_lists

Code:
Traceback (most recent call last):
  File "age_lsgan_transfer.py", line 167, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 125, in run
    _sys.exit(main(argv))
[code=Java]label_lists.append(int(float(label)))
    my_train()
  File "age_lsgan_transfer.py", line 88, in my_train
    source_img_227, source_img_128, face_label = load_source_batch3(FLAGS.source_file, FLAGS.root_folder, FLAGS.batch_size)
  File "./tools/source_input.py", line 129, in load_source_batch3
    img_list, label_list = get_imgAndlabel_list2(filename, img_folder)
  File "./tools/source_input.py", line 185, in get_imgAndlabel_list2
    label_lists.append(int(label))
ValueError: invalid literal for int() with base 10: '\x08'

Habe gesehen, dass man das auch so "lösen" kann:
Code:
label_lists.append(int(float(label)))

aber dann bekomme ich eine andere Fehlermeldung:

Code:
ValueError: could not convert string to float:

Der Code gehört zu einem Face Aging System, das trainiert werden muss. Gesamter Code:
https://github.com/dawei6875797/Fac...al-Networks/blob/master/tools/source_input.py
 

Dompteur

Top Contributor
Schau dir einmal die Daten an, die du da einliest.
Laut Fehlermeldung "ValueError: invalid literal for int() with base 10: '\x08'" steht an der Stelle, wo du einen Integer-Wert erwartest, ein "\x08"
 

EmmaM95

Mitglied
Wenn ich daraus str(label) mache, dann kommt ein anderer Fehler:
Code:
   img_name, label = lines[i].split()
ValueError: too many values to unpack
 

Dompteur

Top Contributor
Mit dem split Befehl wird ein String in eine Liste von Teilstrings aufgespalten. Die Trennung erfolgt anhand der Leerzeichen.
Mit "img_name, label" gibst du an, dass du keine Liste möchtest, sondern 2 Werte erwartest, die gleich an die beiden Variablen zugewiesen werden sollen.
Nun liefert split aber nicht in 2 sondern in mehr Werte.
Offensichtlich haben die Daten, die du da einlesen lässt ein anderes Format als es das Programm erwartet.
 

Neue Themen


Oben