Проблема со sklearn PCA с использованием многопроцессорной обработки ⇐ Python
Проблема со sklearn PCA с использованием многопроцессорной обработки
У меня возникла проблема при запуске PCA с многопроцессорной обработкой. Когда я устанавливаю Pool(processes=4), все работает нормально (np.abs(tmp_matrix-X_train).max(), но когда я устанавливаю Pool(processes=5) # или 6 и выше, ошибка восстановления (рассчитанная ниже в коде) становится огромной > и np.abs(tmp_matrix-X_train).max() в среднем составляет около 10 для каждого столбца. Обратите внимание, что используется пакет Intel sklearnex.
Я попробовал несколько комбинаций и обнаружил:
хорошо: 20 процессоров+processes=1, 80 процессоров+processes=1, 80 процессоров+процессов=4, 120 процессоров+процессов=5
плохо: 80 процессоров+процессов=5, 100 процессоров+процессов=5
Как количество процессоров влияет на точность PCA?
из sklearnex import patch_sklearn patch_sklearn() из sklearn.decomposition импорт PCA из functools импорт частичного из пула импорта многопроцессорной обработки def config_selection_single (df_entry: кортеж, _some_arguments_indlucding_data_object): #некоторый код предварительной обработки для некоторого_итерационного_условия: # некоторая обработка и преобразование данных для связанных данных, не являющихся NaN, и между [-1e20,1e20] для другого_итерационного_условия: z_mean = X[train_cond][:].mean() z_std = X[train_cond][:].std()+1e-10 X_train = (X[train_cond][:]-z_mean) / z_std # X_train имеет форму ~ 2e4 X 50 pca = PCA(n_comComponents=20, svd_solver='full') p_model = pca.fit(X_train) Q = p_model.transform(X_train) tmp_matrix = p_model.inverse_transform(Q) если нет, то np.allclose(Q,X_train.dot(p_model.comComponents_.transpose())): # для вычисления ошибки реконструкции. print("Ошибка реконструкции огромна!") print(np.abs(tmp_matrix-X_train).max()) config_selection_prtial = частичное (config_selection_single, _some_arguments_indlucding_data_object) с пулом (процессы = 4) в качестве пула: # 4 — хорошо, 5 и 6 — плохо пул.карта(config_selection_prtial, список(my_df.items())) К сожалению, мне не удалось найти небольшую демонстрационную версию набора данных, которая могла бы воспроизвести проблему.
У меня возникла проблема при запуске PCA с многопроцессорной обработкой. Когда я устанавливаю Pool(processes=4), все работает нормально (np.abs(tmp_matrix-X_train).max(), но когда я устанавливаю Pool(processes=5) # или 6 и выше, ошибка восстановления (рассчитанная ниже в коде) становится огромной > и np.abs(tmp_matrix-X_train).max() в среднем составляет около 10 для каждого столбца. Обратите внимание, что используется пакет Intel sklearnex.
Я попробовал несколько комбинаций и обнаружил:
хорошо: 20 процессоров+processes=1, 80 процессоров+processes=1, 80 процессоров+процессов=4, 120 процессоров+процессов=5
плохо: 80 процессоров+процессов=5, 100 процессоров+процессов=5
Как количество процессоров влияет на точность PCA?
из sklearnex import patch_sklearn patch_sklearn() из sklearn.decomposition импорт PCA из functools импорт частичного из пула импорта многопроцессорной обработки def config_selection_single (df_entry: кортеж, _some_arguments_indlucding_data_object): #некоторый код предварительной обработки для некоторого_итерационного_условия: # некоторая обработка и преобразование данных для связанных данных, не являющихся NaN, и между [-1e20,1e20] для другого_итерационного_условия: z_mean = X[train_cond][:].mean() z_std = X[train_cond][:].std()+1e-10 X_train = (X[train_cond][:]-z_mean) / z_std # X_train имеет форму ~ 2e4 X 50 pca = PCA(n_comComponents=20, svd_solver='full') p_model = pca.fit(X_train) Q = p_model.transform(X_train) tmp_matrix = p_model.inverse_transform(Q) если нет, то np.allclose(Q,X_train.dot(p_model.comComponents_.transpose())): # для вычисления ошибки реконструкции. print("Ошибка реконструкции огромна!") print(np.abs(tmp_matrix-X_train).max()) config_selection_prtial = частичное (config_selection_single, _some_arguments_indlucding_data_object) с пулом (процессы = 4) в качестве пула: # 4 — хорошо, 5 и 6 — плохо пул.карта(config_selection_prtial, список(my_df.items())) К сожалению, мне не удалось найти небольшую демонстрационную версию набора данных, которая могла бы воспроизвести проблему.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Расчет нагрузки на коэффициент PCA с использованием Sklearn при использовании стандартов
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-