#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 не существует.