Ошибка ModuleNotFoundError: нет модуля с именем ‘tfx.utils.dsl_utils’

#python #tensorflow #tensorflow-extended

Вопрос:

Я установил tfx версии 1.2.1 Python: 3.8.2 Tensorflow: 2.5.2 pip: 21.3.1 Я использую window и установил пакет через pip.

Ошибка произошла, когда я сделал:

 import os
from tfx.components import CsvExampleGen
from tfx.utils.dsl_utils import external_input
base_dir = os.getcwd()
data_dir = os.path.join(os.pardir, "data")
examples = external_input(os.path.join(base_dir, data_dir))
example_gen = CsvExampleGen(input=examples)
context.run(example_gen)
 

Ошибка:

 ModuleNotFoundError                       Traceback (most recent call last)
~AppDataLocalTemp/ipykernel_14604/719215164.py in <module>
      1 import os
      2 from tfx.components import CsvExampleGen
----> 3 from tfx.utils.dsl_utils import external_input
      4 base_dir = os.getcwd()
      5 data_dir = os.path.join(os.pardir, "data")

ModuleNotFoundError: No module named 'tfx.utils.dsl_utils'
 

Я выполнил полную установку tfx, в которой все пакеты совместимы. Любая помощь приветствуется.

Комментарии:

1. tfx.utils.dsl_utils больше не поддерживается. мы должны из tfx.utils.dsl_utils импортировать external_input и использовать его для передачи внешнего data_dir в CsvExampleGen. Однако это больше не работает. Было бы неплохо обновить это. В настоящее время TFX предлагает передавать data_dir напрямую в виде строки. Несмотря на то, что это не вызывает ошибки, он не может принять файл .csv. Для получения дополнительной информации, пожалуйста, обратитесь к этой статье

2. Таким образом, это означает, что вместо использования external_input мы используем urllib.request.urlretrieve. Как насчет файла CSV или внутреннего файла, какой синтаксис мы используем вместо этого?

Ответ №1:

Просто сделайте следующее:

 # Example 1
context= InteractiveContext()
from tfx.components import CsvExampleGen
example_gen = CsvExampleGen(input_base='data')
context.run(example_gen)
 

данные — это папка, которую вы бы загрузили с github автора. Просто укажите имя папки напрямую (или путь к папке с данными).

Ответ №2:

Вместо того, чтобы использовать ‘external_input’, отправьте data_dir непосредственно в CsvExampleGen.

 import os
from tfx.components import CsvExampleGen
base_dir = os.getcwd()
data_dir = os.path.join(os.pardir, "data")
example_gen = CsvExampleGen(input_base='data_dir')
 

Это сработало для меня. Похоже, что в tfx версии 1._ модуль tfx.utils.dsl_utils не существует.