Комментарии 9
Замечания/вопросы.
В тот момент, когда вы подключаете
tf
, у вас из кода пропадает импортRandomForestClassifier
, неаккуратно как-тоЯ вообще не понял, каким образом подключение
tf
и его настроек помогло сэкономить 1.5 секунды времени на обучении модели. Или это связано как-раз с предыдущим пунктом, можетRFC
теперь подключается изtf
?Для меня абсолютная загадка, как одна и та же строка кода
data = pd.read_excel(file_path, engine='openpyxl')
, после того, как её запихали вdata_generator
и добавили туда ещё и циклiterrows
вдруг стала выполняться за доли секунды вместо почти 18 секунд. Может быть это "ленивая загрузка" и на самом деле она вообще не происходит на этом моменте, а происходит только во время уже обучения модели? Тогда как можно тут вообще сравнивать что-то? Во втором случае загрузка данных ещё не произошла. Произошла только подготовка к ней - вы создали объект-генератор, который фактически выполнится позже. Тут нужно смотреть, сколько займёт полный цикл и загрузки данных и обучения модели, и только этот полный цикл можно уже сравнивать по времени с изначальной версией кода.И даже там, где вы изначально измеряете время загрузки файла, вы делаете это не очень корректно. Сначала вы загружаете файл в рамках полного цикла, чтобы измерить полное время, а потом ещё раз отдельно - чисто для измерения времени загрузки файла. После полного цикла у вас этот файл как минимум остался в дисковом кэше системы, что может ускорить его загрузку во второй раз и исказить измеренное вами время. Хотя, возможно, на фоне обработки
Pandas
этих данных время загрузки с диска и не существенно. Но сам подход к измерению неаккуратный.
Если всё так, как я понял, то статья довольно небрежно написана, извините. Нужно дорабатывать. Особенно момент с генератором данных. )
Спасибо, я хотел задать именно эти вопросы, а вы уже все сформулировали )
Я тоже сначало не понял чем это tf быстрее будет excel файл читать, который читается везде плохо, желательно в csv или sqlite конвертировать, которые явно быстрее работают.
Когда-то давно я сравнивал разные форматы и быстрее всего тогда читался формат feather. Но может что с тех пор изменилось. Pandas очень много гадает на данных, из-за этого чтение всегда долгое.
Спасибо за комментарий и замечания. Напомним, что это перевод статьи, которую прочитали наши разработчики, а не наш собственный мануал. Ссылка на оригинал указана в начале статьи.
Мы попросили наших разработчиков еще раз посмотреть статью на ваш комментарий и получили следующий ответ:
«Пропал "RandomForestClassifier" из импорта» — да, причем несколько раз. Если попробовали бы выполнить эти куски кода отдельно от основных, то произошла бы ошибка импорта. Надеемся, что проблем не возникло
«Как tf влияет на sklearn?» — никак не влияет. RandomForestClassifier работает только на CPU. В статье указан неправильный подход к объявлению модели, правильно будет объявить модель через tf. Например:
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
«Как и почему read_excel стал работать быстрее?» — да, это 100% разные подходы. Во втором случае загрузка и обработка данных могут происходить одновременно с обучением модели, параллельно загружая и обрабатывая батчи данных с этапами работы GPU. Использование генератора позволяет не держать все данные в памяти целиком, а только по необходимости. За счет этого снижается нагрузка на оперативную память, из-за чего мы также выигрываем во времени и производительности (но не 18 секунд конечно)
Ещё раз спасибо за ваши замечания. Мы не перерабатывали скрипты в статье, чтобы не исказить представление об оригинале статьи. Будем рады обсудить и другие моменты, которые могли волновать вас в статье!
Грузить данные из xlsx и уповать на скорость - это мем.
Вместо пандаса используйте polars. А остальное несущественно.
"сократить время выполнения ресурсоемких задач в Python"
Проще простого:
cargo new my_new_project
Как сократить время выполнения ресурсоемких задач в Python