PaddlePaddle'il on andmete kordamisel viga: TypeError: objekt 'function' pole korduv

Paddlepaddle Has An Error When Iterating Over Data



  • readerData reading

  • Probleemi kirjeldus: lugeja abil treeningandmete lugemisel ilmneb tõrge ja veatüüp TypeError: ‘function’ pole korduv.



  • Veateade:



TypeError Traceback (most recent call last) in 2 for pass_id in range(1): 3 # training ----> 4 for batch_id, data in enumerate(train_reader): 5 train_cost, train_acc = exe.run(program=fluid.default_main_program(), 6 feed=feeder.feed(data), TypeError: 'function' object is not iterable
  • Probleemi kordumine: andmete lugemisel silmus edastage paddle.batch() Määratud lugeja kordab andmeid, enumerate() Kasutatavad muutujad on määratletud. Funktsiooni kutsumisel teatatakse veast ja tõrkekood on järgmine:
for batch_id, data in enumerate(train_reader): train_cost, train_acc = exe.run(program=fluid.default_main_program(), feed=feeder.feed(data), fetch_list=[avg_cost, acc])
  • Probleemide lahendamine: sama paddle.batch() Hangi funktsioon, mis loeb andmeid, tagastusväärtus on lugeja, ülaltoodud tõrge on tingitud sellest, et otse train_reader Muutuja, see muutuja viitab funktsioonile, seega peate lisama sulgude selle funktsiooni lugeja tagastusväärtuse saamiseks.
for batch_id, data in enumerate(train_reader()): train_cost, train_acc = exe.run(program=fluid.default_main_program(), feed=feeder.feed(data), fetch_list=[avg_cost, acc])

Kui sulge ei kasutata, nimetatakse Pythoni muutujate puhul funktsiooni ennast, mis on funktsiooni objekt, ja see ei pea ootama funktsiooni lõpuleviimist. Sulgude kasutamisel kutsutakse funktsiooni täitmise tulemus ja nõutakse funktsiooni täitmise lõpuleviimist.