Scikit-learn: t-SNE не работает с массивом, который не должен содержать inf или NaN (зависит от OSX)

Созданный на 15 апр. 2016  ·  108Комментарии  ·  Источник: scikit-learn/scikit-learn

Darwin-15.0.0-x86_64-i386-64bit
('Python', '2.7.11 |Anaconda custom (x86_64)| (default, Dec  6 2015, 18:57:58) \n[GCC 4.2.1 (Apple Inc. build 5577)]')
('NumPy', '1.11.0')
('SciPy', '0.17.0')
('Scikit-Learn', '0.17.1')

При попытке запустить t-SNE

proj = TSNE().fit_transform(X)
ValueError: array must not contain infs or NaNs

тем не мение

np.isfinite(X).all() # True 
np.isnan(X).all() # False
np.isinf(X).all() # False

Полная трассировка стека:


ValueError                                Traceback (most recent call last)
<ipython-input-16-c25f35fd042c> in <module>()
----> 1 plot(X, y)

<ipython-input-1-72bdb7124d13> in plot(X, y)
     74 
     75 def plot(X, y):
---> 76     proj = TSNE().fit_transform(X)
     77     scatter(proj, y)

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in fit_transform(self, X, y)
    864             Embedding of the training data in low-dimensional space.
    865         """
--> 866         embedding = self._fit(X)
    867         self.embedding_ = embedding
    868         return self.embedding_

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _fit(self, X, skip_num_points)
    775                           X_embedded=X_embedded,
    776                           neighbors=neighbors_nn,
--> 777                           skip_num_points=skip_num_points)
    778 
    779     def _tsne(self, P, degrees_of_freedom, n_samples, random_state,

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _tsne(self, P, degrees_of_freedom, n_samples, random_state, X_embedded, neighbors, skip_num_points)
    830         opt_args['momentum'] = 0.8
    831         opt_args['it'] = it + 1
--> 832         params, error, it = _gradient_descent(obj_func, params, **opt_args)
    833         if self.verbose:
    834             print("[t-SNE] Error after %d iterations with early "

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _gradient_descent(objective, p0, it, n_iter, objective_error, n_iter_check, n_iter_without_progress, momentum, learning_rate, min_gain, min_grad_norm, min_error_diff, verbose, args, kwargs)
    385     for i in range(it, n_iter):
    386         new_error, grad = objective(p, *args, **kwargs)
--> 387         grad_norm = linalg.norm(grad)
    388 
    389         inc = update * grad >= 0.0

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/scipy/linalg/misc.pyc in norm(a, ord, axis, keepdims)
    127     """
    128     # Differs from numpy only in non-finite handling and the use of blas.
--> 129     a = np.asarray_chkfinite(a)
    130 
    131     # Only use optimized norms if axis and keepdims are not specified.

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/numpy/lib/function_base.pyc in asarray_chkfinite(a, dtype, order)
   1020     if a.dtype.char in typecodes['AllFloat'] and not np.isfinite(a).all():
   1021         raise ValueError(
-> 1022             "array must not contain infs or NaNs")
   1023     return a
   1024 

ValueError: array must not contain infs or NaNs

Самый полезный комментарий

Для всех, кто пострадал от этого, это должно исправить:

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

Сообщите мне, если это не сработает для вас.

Все 108 Комментарий

То же самое с ('Scikit-Learn', '0.18.dev0')

Вы не возражаете поделиться со мной своими данными X?

Конечно, где и в каком формате вам это нравится?

17 апреля 2016 года в 09:11 康 洋[email protected] написал:

Вы не возражаете поделиться со мной своими данными X?

-
Вы получаете это, потому что вы являетесь автором темы.
Ответьте на это письмо напрямую или просмотрите его на GitHub https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -210968577

Моя электронная почта [email protected]
Насколько я знаю, есть функция numpy.save для сохранения массива в двоичный файл в формате .npy ~~

Я тестирую ваши данные в ubuntu 14.04 LTS с помощью
Python == 2.7.6
scikit-learn == 0.17.1
numpy == 1.8.2
scipy == 0.13.3
Это нормально и не вызывает ValueError. Код теста:
`import numpy
а = numpy.load ('/ корень / test.npy')
распечатать a.shape
print numpy.isnan (a) .all () #False
print numpy.isfinite (a) .all () #True
print numpy.isinf (a) .all () #False

из sklearn.manifold импортного ЦНЭ
proj = TSNE (). fit_transform (a) # [[2.35503527e + 00 1.15976751e + 01] .... [3.29832591e + 00 8.98212513e + 00]]
печать проекта


Затем я обновляю numpy, scipy до 1.11.0, 0.17.0 и тестирую с тем же кодом, и он также не вызывает никаких ошибок.

Воспроизведено для версии 3.5 с помощью Anaconda под OS X El Capitan.

Darwin 15.4.0
Python 3.5.1 :: Anaconda custom (x86_64)
numpy 1.10.4
scipy 0.17.0
scikit-learn 0.17.1

Пример выполнения:

import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Спасибо @ ivan-krukov, но я не могу воспроизвести в Python 3.3. Постараюсь 3.5

Это не относится к linux (4.4.0-21, Ubuntu 16.04) с теми же пакетами в версии 3.5.

Я использую El-Capitan, но мне не удается запустить установку Python 3.5.

Есть ли обновления по этому поводу?

У меня проблема с моим набором данных: Anaconda, Py 3.5, sklearn 0.17.1, OSX El Capitan.
Я могу воспроизвести ошибку на примере @ ivan-krukov.

Та же проблема. Python 2.7.6 на OS X El Capitan на 0.17. Пробовал тот же код в Linux с использованием Python 2.7.6 и 0.17, и он работает.

Та же проблема.
OSX El Capitan Python 3.5.1
scikit-learn == 0.17.1
scipy == 0.17.1

У меня такая же проблема, и я был бы признателен за исправление (или обходной путь?)
Версия системы: OS X 10.11.5
Python 3.5.1 :: Anaconda 4.0.0 (x86_64)
numpy.version.version 1.11.0
scipy.version 0.17.1
sklearn. версия 0.17.1

Также могу воспроизвести баг с образцом кода от ivan-krukov

Та же проблема в OS X EI Capitan с использованием Python 3.5

Версия системы: OS X 10.11.5
Python 3.5.1 :: Continuum Analytics, Inc.
тупой. версия 1.11.1
scipy. версия 0.16.0
sklearn. версия 0.17.1

Та же проблема. Хотя я заметил, что это происходит только для части моего набора данных, а не для всего . То есть, если я делаю TSNE для всего набора данных, он работает , если я делаю это на сокращенном наборе, это не так.

О_о ;; Это просто, если я повторю одно и то же «сломанное» подмножество, которое не работает (с помощью списка * 10), тогда оно сработает. Умножение каждого отдельного вектора на 10 не работает, но дублирование даты работает. просто удвоения длины списка недостаточно. Может это какая-то проверка степеней свободы взбесилась?

@ ivan-krukov Сегодня я прикончил пулю и установил виртуальную машину El Capitan. К сожалению, я не могу воспроизвести вашу проблему.

@Concomitant, можете ли вы воспроизвести ошибку в автономном примере, приведенном в https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -218365487?

Я использую El-Capitan, но мне не удается запустить установку Python 3.5.

@jnothman , похоже, это происходит не только на Python 3.5, поэтому, если вы можете попытаться воспроизвести с Python 2.7 (фрагмент: https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment-218365487 ) это было бы прекрасно.

@lesteve Я могу воспроизвести проблему.

import numpy as np
import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 866, in fit_transform
    embedding = self._fit(X)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 777, in _fit
    skip_num_points=skip_num_points)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 832, in _tsne
    params, error, it = _gradient_descent(obj_func, params, **opt_args)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 387, in _gradient_descent
    grad_norm = linalg.norm(grad)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/scipy/linalg/misc.py", line 115, in norm
    a = np.asarray_chkfinite(a)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/numpy/lib/function_base.py", line 1033, in asarray_chkfinite
    "array must not contain infs or NaNs")
ValueError: array must not contain infs or NaNs

Однако, следуя тому же коду:

>>> a = np.random.uniform(size=(10000,20))
>>> TSNE(n_components=2).fit_transform(a)
array([[  3.25766047e+11,  -2.74708004e+11],
       [  2.43498802e+11,  -7.68189047e+10],
       [ -6.00107639e+09,  -1.13548763e+11],
       ..., 
       [  3.02794039e+10,   6.64402020e+11],
       [  2.55855781e+10,   5.67932400e+10],
       [  1.42040378e+11,  -7.55188994e+10]])

Странно.

Я не могу воспроизвести ни с Python 3.5.1, ни с numpy 1.11.1, ни с scipy 0.17.1, ни с scikit-learn 0.17.1 из miniconda (с MKL) на виртуальном боксе с OSX El Capitan. Попробую позже на реальном Mac.

Также @joelkuiper и @Concomitant не могли бы вы проверить, можете ли вы воспроизвести проблему в текущем состоянии главной ветки scikit-learn?

@lesteve и другие. Я не могу воспроизвести ошибку с помощью фрагмента, опубликованного ранее на последней версии master с python 2.7.

Системная информация:

Darwin-15.0.0-x86_64-i386-64bit
('Python', '2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]')
('NumPy', '1.11.0')
('SciPy', '0.17.0')
('Scikit-Learn', '0.18.dev0')

Я снова попробовал на реальном Mac под управлением OSX El Capitan 10.11.3 (с последними numpy scipy и scikit-learn от anaconda, та же настройка, что и @Concomitant в https://github.com/scikit-learn/scikit-learn/issues / 6665 # issuecomment-229703129), но также не смог воспроизвести проблему (несколько раз пытался запустить фрагмент).

Что странно, хотя, несмотря на строку np.random.seed(1) я получаю разные результаты для вывода fit_transform . Это могло быть само по себе ошибкой.

Что странно, хотя, несмотря на строку np.random.seed (1), я получаю разные результаты для вывода fit_transform. Это могло быть само по себе ошибкой.

На самом деле я слишком быстро прочитал фрагмент кода random.seed(1) он должен быть np.random.seed(1) иначе numpy RNG не будет повторно заполнен должным образом, и невозможно получить детерминированные результаты.

Кроме того, теперь я понял, что слишком быстро прочитал все обсуждение и что ошибка возникает только с python 2.7. Попробую еще раз.

Я также не могу воспроизвести с помощью python 2.7.12 из conda на OSX 10.11.3.

На самом деле @Ekliptor может воспроизвести проблему с python 3.5.1 из conda, поэтому она, вероятно, тоже не связана с версией Python. Может быть, это зависит от младшей версии OSX. Обновится и попытается снова.

Я не могу воспроизвести ни то, ни другое с OSX 10.11.5. Я пробовал оба с Python 2.7.12 и 3.5.2, установленными с conda вместе с numpy 1.11.1, scipy 0.17.1 и scikit-learn 0.17.1.

Я не знаю что делать Если кто-то из вас может воспроизвести проблему, попробуйте найти несколько случайных начальных чисел, которые вызывают проблему (используя np.random.seed(my_seed) вместо random.seed(1) в приведенном выше фрагменте), и укажите здесь значение (вместе с версия OSX и пакеты Python).

Я могу подтвердить, что проблема решена в последней версии. Больше не могу воспроизвести, как раньше.
Я обновил только numpy:
numpy.version.version 1.11.1

Всем, кто работает с Tensorflow, могу добавить:
Когда я пытаюсь построить очень маленькую выборку (<200 точек), я иногда все еще сталкиваюсь с этой ошибкой. После увеличения размера выборки я перехожу в tsne.fit_transform (), он всегда работает.

Спасибо @Ekliptor за проверку работы с мастером scikit-learn. @joelkuiper и @Concomitant , вы подтверждаете, что scikit-learn master также работает на вас? Если да, то мы можем закрыть этот вопрос.

Я установил мастер, теперь фрагмент кода работает нормально.

похоже, сейчас работает для всех. закрытие.

Извините, но я все еще получаю это на Python 3.5.1, scikit 0.17, scikit-learn 0.18 (commit 9e913c04d748) и Numpy 1.11.1 в Mac OS 10.11.5.

@dmyersturnbull , вы получаете сообщение об ошибке при запуске фрагмента с https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -218365487?

@lesteve Я использовал именно этот фрагмент, да. Однако я больше не получаю его после очистки установки Anaconda и переустановки с нуля с помощью Python 3.5.2.

У меня такая же проблема с Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 в Mac OS X El Capitan 10.11.3. Это работает, когда у меня больше 2100 очков, но не работает при более низких значениях.

У меня такая же проблема с Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 в Mac OS X El Capitan 10.11.3. Это работает, когда у меня больше 2100 очков, но не работает при более низких значениях.

Аналогично не работает для низких значений

Откройте, пожалуйста

У меня такая же проблема с OS X 10.11.6, python 3.5.1, sklearn 0.17.1 и numpy 1.11.1.
В этом наборе данных: https://dl.dropboxusercontent.com/u/103591/valals.out (с np.savetxt)

Аналогично не работает для низких значений

@Lucidyan Я не понимаю, что вы имеете в виду.

У меня такая же проблема с OS X 10.11.6, python 3.5.1, sklearn 0.17.1 и numpy 1.11.1.
В этом наборе данных: https://dl.dropboxusercontent.com/u/103591/valals.out (с np.savetxt)

@pbnsilva, можешь попробовать этот фрагмент, размещенный ниже? Возможно, вам придется запускать его несколько раз, потому что, к сожалению, начальное число не установлено должным образом (вам нужно использовать np.random.seed вместо random.seed ).

import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Бонусные баллы, если вы можете найти начальный аргумент для np.random.seed и аргумент random_state для TSNE что делает фрагмент детерминированным.

В качестве альтернативы некоторые люди сообщили, что эта ошибка была исправлена ​​в мастере. Не могли бы вы попытаться создать мастер scikit-learn, чтобы посмотреть, исчезнет ли проблема?

@lesteve Я имел в виду, что получаю ту же ошибку с небольшим количеством экземпляров с теми же параметрами системы (Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 на Mac OS X El Capitan 10.11.3)

@pbnsilva, можешь попробовать этот фрагмент, размещенный ниже? Возможно, вам придется запускать его несколько раз, потому что, к сожалению, семя не установлено должным образом (вам нужно использовать np.random.seed, а не random.seed).

Я попробовал, и это не удалось с X_SIZE <= 1750 (Y_SIZE = 20, n_components = 2 стали константами). если я начну изменять константы (увеличивать) с фиксированным X_SIZE = 1750, это тоже терпит неудачу.

@Lucidyan, не могли бы вы попробовать тот же фрагмент с мастером scikit-learn и посмотреть, не сработает ли он?

да, не работает для меня (numpy 1.11.1, El capitan.10.11, sklearn 0.17.1, python 3.5.2) досадно, что он сломал старый код, который действительно работал. что вы, ребята, изменили ...?

@ act65 мы более чем стремимся разобраться в этом, но мы не смогли воспроизвести, и, к сожалению, мы получаем смешанные отчеты от пользователей.

Итак, если вы еще этого не сделали (к сожалению, мы не являемся читателями мыслей, и фраза «не работает для меня» не говорит нам, что вы пробовали), не могли бы вы попробовать запустить упомянутый выше фрагмент в https://github.com/scikit-learn / scikit-learn / issues / 6665 # issuecomment -243782185. Попробуйте запустить его несколько раз на всякий случай, потому что случайное начальное число не установлено должным образом, и во фрагменте может остаться некоторая случайность.

Тогда что было бы действительно здорово, если бы вы могли попробовать с кандидатом на выпуск 0.18, который просто установить (настоятельно рекомендуется делать это в отдельном virtualenv или conda env):

pip install --pre scikit-learn -U

Отредактировано: была выпущена версия 0.18, поэтому вы можете просто использовать (не нужно использовать --pre ):

pip install scikit-learn -U

и повторно запустите фрагмент, чтобы увидеть, исправлено ли оно в версии 0.18, как уже сообщали некоторые пользователи в этой ветке.

0.18 будет выпущен через несколько недель, если не дней, так что вы знаете, что вам нужно делать, если вы хотите помочь нам разобраться в этом до релиза ;-).

да мой плохой, должно было быть яснее. (Я пробовал примерно то же самое, что и другие, только на MNIST).

в любом случае это работает! благодаря :)
pip install --pre scikit-learn -U исправил

Хорошо, спасибо за отчет и приятно слышать, что это исправлено для вас в кандидате на выпуск 0.18! Это похоже на то, что сообщили другие, когда они говорят, что это было исправлено в мастере.

Однако для полноты картины рекомендуется придерживаться выпущенных версий для производственного кода, поэтому вам может потребоваться еще немного подождать, пока не выйдет выпуск 0.18.

@lesteve
Я пробовал фрагмент на версии 0.18rc2, установленной

pip install --pre scikit-learn -U

И вроде работает! Ура!

Спасибо @Lucidyan за попытку.

Извините, я все еще получаю эту ошибку с приведенным выше фрагментом кода после обновления до scikit-learn 0.18 ( pip install --pre scikit-learn -U ) в conda env.

Вот моя системная информация:
OS X El Capitan версии 10.11.4
Python 2.7.12
sklearn 0.18 (такая же ошибка возникла и на sklearn 0.17.1)
numpy 1.11.1 (получил ту же ошибку на numpy 1.11.2)
scipy 0.18.1

Однако я запустил тот же фрагмент кода в системе Linux, я не получил ошибки.
Системная информация о системе Linux:
Ubuntu 14.04.5 LTS (GNU / Linux 3.13.0-91-общий x86_64)
Python 2.7.6
sklearn 0,18
numpy 1.11.2
scipy 0.13.3

Попробуйте удалить и переустановить numpy, scipy и scikit-learn. Если это все еще не удается, попробуйте использовать другую среду virtualenv (или среду conda, если вы используете conda), чтобы убедиться, что что-то не так в вашей среде Python.

По-прежнему получаю ту же ошибку ( ValueError: array must not contain infs or NaNs ) в sklearn 0.18 ( 0.18-np111py35_0 ) через conda. Хотя колеса с шипами работают нормально!

По-прежнему получаю ту же ошибку (ValueError: массив не должен содержать inf или NaN) в sklearn 0.18 (0.18-np111py35_0) через conda. Хотя колеса с шипами работают нормально!

Хммм интересно ... не могли бы вы попробовать использовать пакеты conda без mkl, то есть что-то вроде conda create -n sklearn_nomkl python scikit-learn nomkl чтобы мы могли видеть, является ли это MKL или openblas?

Также бонусные баллы, если вы можете предоставить фрагмент, воспроизводящий проблему с фиксированным случайным начальным значением (т. Е. С использованием np.random.RandomState(some_int) ), который можно использовать в качестве справочного фрагмента в будущем. До сих пор фрагмент, который у нас есть, не является детерминированным (используется random.seed и не влияет на numpy.random seed).

Конечно, нет проблем. Это может быть действительно проблема BLAS, conda create -n sklearn_nomkl python scikit-learn nomkl env работает нормально.

Что касается фрагмента ... это становится интересным. Например,

from sklearn.manifold import TSNE
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits

digits = load_digits()

X_train, X_test, y_train, y_test = train_test_split(digits.data, 
                                                    digits.target, 
                                                    random_state=1)

tsne = TSNE(random_state=1)
digits_tsne_train = tsne.fit_transform(X_train)

воспроизводит проблему на моей машине. Однако когда я заменяю digits_tsne_train = tsne.fit_transform(X_train) на digits_tsne_train = tsne.fit_transform(digits.data) кажется, все в порядке. Было бы неплохо найти более легкий пример, чтобы добавить этот конкретный случай в тесты Travis.

РЕДАКТИРОВАТЬ: То же самое и с радужной оболочкой. iris.data работает в fit_transform, а разделенный набор данных ( X_train ) - нет. Может, в train_test_split творится что-то забавное. Однако и X_train и iris.data кажутся массивами с плавающей точкой 64 ...

А как насчет фрагмента https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -243782185, вы не нашли способ сделать его детерминированным и по-прежнему не работают на вашем компьютере?

Фрагмент

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

воспроизводит ошибку (но отлично работает на nomkl env)

Хорошо, спасибо за это, по крайней мере, теперь у нас есть детерминированный фрагмент. Для записи, можете ли вы опубликовать вывод этого фрагмента:

import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)

Также, ради здравого смысла, можете ли вы убедиться, что можете воспроизвести проблему в новой среде conda.

Честно говоря, я не уверен, что мы будем делать дальше. С тех пор я не пробовал, но не смог воспроизвести на виртуальном приставке El Capital Virtual, @ogrisel не смог воспроизвести ни то, ни другое на ноутбуке OSX, поэтому в то время он сказал, что может быть проблема, связанная с оборудованием.

Конечно,

машина, которая вызывает эту проблему:

Darwin-16.1.0-x86_64-i386-64bit
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]
NumPy 1.11.2
SciPy 0.18.1
Scikit-Learn 0.18

(протестировал в свежей среде conda)

может быть проблема, связанная с оборудованием.

Я думаю, вы могли быть на что-то! Я попробовал это на своем другом Mac, и там он отлично работает. Единственное отличие состоит в том, что вышеприведенный вывод работает на более старом ядре ( Darwin-15.6.0-x86_64-i386-64bit ). Еще не обновили второй Mac до macOS Sierra, которая работает на бывшем компьютере, на котором возникла эта проблема. Может быть связано с ОС. Я обновлю вторую машину до Sierra в следующем месяце или около того (я нахожусь в середине проекта и не хочу что-то ломать), но я могу сообщить вам, приведет ли обновление к Sierra к этой проблеме на вторая машина (или, может быть, кто-то другой с macOS Sierra может протестировать ее, чтобы мы теперь, если это вещь ОС)

Учитывая, что о проблеме сообщалось в разных версиях OSX, я сомневаюсь, что это проблема только версии OSX. IIRC @ogrisel догадывался, что это связано с архитектурой процессора.

Другой (более затратный по времени) способ отладки этой проблемы - это отслеживание того, где NaN появляются в коде.

IIRC @ogrisel догадывался, что это связано с архитектурой процессора.

Хм, чем версия conda scikit-learn будет отличаться от pip wheel? Потому что последние, похоже, работают на одной машине. Может это как-то связано с conda

Другой (более затратный по времени) способ отладки этой проблемы - это отслеживание того, где NaN появляются в коде.

Я заметил, что градиент в https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L387 взрывается, пока не станет -inf в одной позиции после 25-я итерация в https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L386 for-loop

...
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   6.06587795e+32  -1.10699515e+33
  -1.55245133e+34              inf  -1.52569936e+33  -3.43926080e+33
  -1.92332051e+32  -2.73996151e+32  -2.57570880e+33  -3.64962271e+33
...

На другой машине (той, которая отлично работает) все градиенты <0 после той же итерации. Итак, почему-то функция _gradient_descent не работает должным образом (может быть, из-за какой-то вещи BLAS).

Хм, чем версия conda scikit-learn будет отличаться от pip wheel? Потому что последние, похоже, работают на одной машине. Может это как-то связано с conda

Колеса pip используют OpenBLAS, и у вас нет проблем при использовании OpenBLAS с conda (с помощью трюка nomkl ), поэтому это действительно похоже на проблему MKL, которая, к тому же, скорее всего, зависит от процессора.

Кстати, отличная работа по устранению проблемы! Бонусные баллы, если вам удастся дополнительно изолировать проблему (например, путем обработки данных перед появлением итерации inf ). Проблема, скорее всего, возникает в каком-то коде Cython в sklearn / manifest / _barnes_hut_tsne.pyx.

Не следует ли вновь открыть этот вопрос с учетом последних результатов? Я тоже попал в нее, и мне также удалось обойти ее с помощью трюка с nomkl, но я чувствую себя активной ошибкой по сравнению с закрытой, не так ли?

Другие, которые сталкивались с этим: https://discussions.udacity.com/t/assignment-5-error-in-the-main-code-valueerror-array-must-not-contain-infs-or-nans/178187 / 7

Вы правы, открытие. Это серьезный, кажется, аппаратно-зависимый, и ни один из основных разработчиков не смог его воспроизвести. Единственный способ исправить это - если люди, у которых возникла проблема, потратят некоторое время на дальнейшую отладку проблемы.

Кстати, отличная работа по устранению проблемы! Бонусные баллы, если вам удастся дополнительно изолировать проблему (например, путем сбора данных перед появлением итерационной информации). Проблема, скорее всего, возникает в каком-то коде Cython в sklearn / manifest / _barnes_hut_tsne.pyx.

Я счастлив изучить это дополнительно в декабре после всех ноябрьских крайних сроков ... Однако даже это может быть более изолированным, мне любопытно, есть ли решение для такой аппаратной проблемы. Может быть, до тех пор, пока это не будет полностью решено, может быть стоит поднять более конкретное исключение / предупреждение, если градиент содержит inf с примечанием об этой проблеме?

Я только что создал новый conda virtualenv и построил devp-версию sklearn из исходного кода, только что созданного из ветки sciki-learn master, ошибка исчезла. Создан ли devp sklearn из исходного кода с использованием OpenBLAS вместо MKL?

Я счастлив подробнее изучить это в декабре, после всех ноябрьских крайних сроков ...

Звучит отлично, спасибо большое!

Однако даже это может быть дополнительно изолировано, мне любопытно, есть ли исправление для такой аппаратной проблемы.

Не уверен в исправлении, одна надежда была бы, если бы мы могли изменить наш код cython для решения проблемы, как только мы ее изолировали. Кроме того, это может быть проблема openblas, и было бы здорово сообщить об этом вверх по течению, тем более, что колеса используют openblas.

Может быть, до тех пор, пока это не будет полностью решено, может быть стоит поднять более конкретное исключение / предупреждение, если градиент содержит inf с примечанием об этой проблеме?

Добавление совета к сообщению об ошибке (только в OS X) звучит как хорошая идея, но я не уверен, что он должен сказать, возможно, «подумайте об использовании conda и установите scikit-learn с MKL» или что-то в этом роде.

Создан ли devp sklearn из исходного кода с использованием OpenBLAS вместо MKL?

@zhongyuk зависит от того, какая библиотека у вас установлена. Один из способов узнать, как только вы создали scikit-learn из исходного кода, - запустить эквивалент ldd (Google, кажется, говорит otool -L ) на sklearn/cluster/_k_means.so (имя будет другим, если вы используете Python 3, т.е. что-то вроде sklearn/cluster/_k_means.cpython-35m-x86_64-linux-gnu.so ). Например, на моей машине с Ubuntu я получаю следующее:

sklearn/cluster/_k_means.so:
        linux-vdso.so.1 =>  (0x00007ffc2312a000)
        libmkl_intel_lp64.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_intel_lp64.so (0x00007fadc2865000)
        libmkl_intel_thread.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_intel_thread.so (0x00007fadc0ee4000)
        libmkl_core.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_core.so (0x00007fadbf483000)
        libiomp5.so => /home/lesteve/miniconda3/envs/py27/lib/libiomp5.so (0x00007fadbf139000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fadbeeeb000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fadbebe1000)
        libpython2.7.so.1.0 => /home/lesteve/miniconda3/envs/py27/lib/libpython2.7.so.1.0 (0x00007fadbe7fa000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fadbe431000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fadbe22c000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fadbe016000)
        /lib64/ld-linux-x86-64.so.2 (0x0000563bdeda1000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fadbde12000)

Итак, из третьей строки видно, что он использует MKL.

но я не уверен, что он должен сказать, возможно, «подумайте об использовании conda и установите scikit-learn с MKL» или что-то в этом роде.

Я просто хотел написать, что, думаю, вы его перевернули: колеса работали, и проблема возникла только тогда, когда я использовал его через conda с MKL ... Теперь, я думаю, у меня есть хорошие новости: я просто хотел повторно запустите приведенный выше пример, который ранее вызывал эту проблему, чтобы подтвердить

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

и у меня больше не возникает этой проблемы. Я помню, что на прошлой неделе я переустановил миниконду из-за других проблем. Как вы думаете, это может быть связано с какой-то проблемой в старой кондукторе? Было бы здорово, если бы другие люди, у которых была эта проблема, могли также попробовать обновить / переустановить conda и проверить, решает ли это проблему для них. Тем временем я попытаюсь найти старую резервную копию, чтобы узнать, какую версию conda я установил ранее. (щас у меня conda 4.2.12)

Просто хочу сказать, что я запустил otool -L на sklearn/manifold/_barnes_hut_tsne.so (я предполагаю, что это скомпилированный файл t_sne.py?), Похоже, он действительно использует BLAS. И тот, который выдал ошибку, похоже, использует MKL ..

У меня версия conda 4.2.13, и env, который выдает ошибку, и env с исходным кодом sklearn (который не генерирует ошибку) находятся внутри conda.

Хм, интересно, значит, тогда это не проблема с conda ... Любопытно, почему у меня это работает сейчас: /
(все, что я могу подумать, что изменилось (кроме переустановки conda) - это перезагрузка: P)

Я просто хотел написать, что, я думаю, вы его перевернули: колеса работали, и проблема возникла только тогда, когда я использовал его через conda с MKL

Да, извините за это. Я отредактирую заголовок проблемы, чтобы попытаться запомнить его в следующий раз.

Хм, интересно, значит, тогда это не проблема с conda ... Любопытно, почему у меня это работает сейчас: /
(все, что я могу подумать, что изменилось (кроме переустановки conda) - это перезагрузка: P)

Хммм, случайное предположение, возможно, это версия mkl, хотя, если я считаю, что вывод conda info mkl последняя версия mkl (11.3.3) от 2016-05-13.

@zhongyuk попробуйте создать scikit-learn внутри conda env, который использует mkl, я считаю, что этого должно быть достаточно, чтобы mkl был поднят (вероятно, в этом случае хорошая идея сделать make clean а затем make in для восстановления с нуля).

@lesteve Я создал scikit-learn в двух виртуальных средах conda из исходного кода (выпуск ветки 0.18), тот, который использует MKL, действительно вызывает ошибку; тот, который использует libBLAS, не вызывает ошибок.

Результат выполнения otool -L на sklearn/manifold/_barnes_hut_tsne.so находится здесь (в случае, если версия MKL дает вам какую-либо подсказку?)

```@rpath/libmkl_intel_lp64.dylib (версия совместимости 0.0.0, текущая версия 0.0.0)
@ rpath / libmkl_intel_thread.dylib (версия совместимости 0.0.0, текущая версия 0.0.0)
@ rpath / libmkl_core.dylib (версия совместимости 0.0.0, текущая версия 0.0.0)
@ rpath / libiomp5.dylib (версия совместимости 5.0.0, текущая версия 5.0.0)
/usr/lib/libSystem.B.dylib (версия совместимости 1.0.0, текущая версия 1226.10.1)

@zhongyuk отлично! Для полноты картины, можете ли вы опубликовать вывод conda list '(mkl|cython|numpy|scipy)$' (в вашей среде MKL conda)? Пока мы занимаемся этим, информация о вашем процессоре ( sysctl -n machdep.cpu.brand_string согласно Google) и информация о вашей платформе ( python -c 'import platform; print(platform.platform())' ) будут отличными.

Было бы здорово продолжить с того места, где остановился @rabst, и дополнительно изолировать проблему:
https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -258311980

Поскольку это связано с BLAS, я подозреваю, что что-то идет не так в этой строке, из-за чего градиент имеет некоторые не конечные значения.

@lesteve Вывод информации о среде

Cython                    0.25.1                    <pip>
mkl                       11.3.3                        0  
numpy                     1.11.1                    <pip>
numpy                     1.11.1                   py27_0 
scipy                     0.18.1              np111py27_0 

Информация о процессоре: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Информация о платформе: Darwin-15.4.0-x86_64-i386-64bit

Я рассмотрю проблему взрыва градиента, которую @rabst обнаружил в другом комментарии, и строку, на которую вы указали где-то на этой и / или следующей неделе, я буду держать всех в курсе любых интересных результатов.

@zhongyuk Если это поможет, у меня очень похожая установка (больше не могу воспроизвести проблему после переустановки miniconda), за исключением того, что у меня macOS Sierra вместо OS X El Capitan и что у меня numpy 1.11.2 вместо 1.11.1 .

@rasbt хмм, интересно,

@zhongyuk Хм, думаю вряд ли это связано. До того, как я переустановил miniconda, у меня также была проблема в macOS Sierra. PS: Tensorflow отлично работает для меня на Sierra, но я занимаюсь только процессором и прототипированием на своих Mac, поэтому я не знаю о проблемах с графическим процессором, связанных с Sierra.

@rasbt хм, приятно знать, что TF отлично работает на Sierra. Вы хотите запустить otool -L в файле sklearn/manifold/_barnes_hut_tsne.so на своей платформе, чтобы увидеть, какую математическую библиотеку sklearn использует ниже? По крайней мере, таким образом мы могли бы узнать, исчезла ли проблема после переустановки miniconda, которая фундаментально связана с математической библиотекой?

На _barnes_hut_tsne.cpython-35m-darwin.so я получаю следующее:

    @rpath/libmkl_intel_lp64.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmkl_intel_thread.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmkl_core.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libiomp5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

@rasbt Хм, это действительно интересно. Он также использует MKL. Я недостаточно знаю математическую библиотеку, чтобы предположить, что это значит ... @lesteve, вероятно, сможет сделать из этого больше?

Я заметил, что в моей платформе libmkl_intel_lp64.dylib не загружается ... Возможно ли, что это вызвало проблему?

ВАУ, да! это вызвано тем, что libmkl_intel_lp64.dylib не загружено !!! Я нашел этот поток при переполнении стека, а затем запустил conda install --debug mkl , затем запустил otool -L в файле sklearn/manifold/_barnes_hut_tsne.so , затем загрузился libmkl_intel_lp64.dylib и запустил фрагмент кода , ошибка исчезла! Пусть работают пять команд! @rasbt

Если бы кто-нибудь еще мог проверить свою платформу и посмотреть, исчезла ли ошибка после того, как убедился, что libmkl_intel_lp64.dylib загружен, это было бы здорово!

@lesteve Поскольку похоже, что многие люди столкнулись с этой проблемой, и похоже, что это связано с (какой-то версией?) conda, не извлекающей полные библиотеки MKL (мое понимание ситуации до сих пор), хотя это не ошибка scikit-learn, я действительно думаю, что было бы неплохо добавить какое-то замечание, предупреждение или сообщения об ошибках для пользователей (OS X)? Таким образом, по крайней мере, они могут проверить, полностью ли извлечена библиотека MKL на их платформе, а затем исправить ее, если это не так?

@zhongyuk классно , рад слышать, что вы смогли сузить libmkl_intel_lp64.dylib - это было бы здорово (с точки зрения понимания того, что происходит) :). Это также объяснило бы, почему это работает для меня сейчас, после переустановки Miniconda ... Было бы здорово, если бы кто-нибудь другой мог попробовать это «исправление».

Если вышеупомянутый libmkl_intel_lp64.dylib действительно вызвал эту проблему, остается вопрос, как с этим бороться в scikit-learn. Я имею в виду, что эта "ошибка" отвратительна, и людям может быть немного сложно понять, что она вызвана libmkl_intel_lp64.dylib . Я, вероятно, не стал бы добавлять в код в scikit-learn дополнительное сообщение «если градиент содержит информацию об ошибке повышения + сообщение», поскольку это может сильно раздражать с точки зрения производительности. Однако я думаю, что добавление примечания или комментария в документацию по установке и / или T-SNE было бы хорошей идеей.

Просто хочу добавить быстрое обновление: у меня было 2 виртуальных env в conda, оба использовали MKL. Один из них оснащен numpy 1.11.1 а другой - numpy 1.11.2 . Запуск otool -L показал, что у них обоих почему-то не было загружено libmkl_intel_lp64.dylib . Убедившись, что libmkl_intel_lp64.dylib загружен, ошибка исчезла в виртуальном окружении с numpy 1.11.2 . Однако ошибка продолжала появляться в env с numpy 1.11.1 . После обновления numpy до 1.11.2 я больше не могу воспроизводить ошибку ни в одной виртуальной среде conda. Поскольку это звучит сложно, а точная причина ошибки все еще неясна, я предполагаю, что это, вероятно, осложнение, связанное с неполной загрузкой библиотеки MKL и зависимыми библиотеками scikit-learn (возможно, numpy?). (Хотя я не пытался создать virtualenv с MKL и numpy 1.11.1 чтобы посмотреть, воспроизведет ли это ошибку.)

И я второе предложение @rasbt о добавлении заметок, комментариев или документов!

@zhongyuk рад, что ты исправил это! Кажется, что переустановка пакетов с помощью conda может помочь, но я боюсь, что нет очень четкого представления о причине проблемы :(.

Это ошибка конды, верно? Или кто-нибудь испытывал ошибку, не используя conda?

Мне удалось найти способ воспроизвести, я думаю, установив колесо numpy, а затем scikit-learn через conda поверх него (получил подсказку из вывода conda list в https://github.com/scikit- learn / scikit-learn / issues / 6665 # issuecomment-262800762, где указаны два numpy ).

conda create -n tmp python=3 -y
. activate tmp
pip install numpy -y
conda install scikit-learn -y

затем выполните фрагмент с https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -262800762.

Похоже, это происходит при смешивании numpy, установленного через pip и conda. В моей книге никогда не бывает хорошей идеей смешивать pip и conda для данного пакета, но я предполагаю, что это может произойти, даже не осознавая этого довольно легко (например, вы устанавливаете проект, который зависит от numpy через pip, а затем scikit-learn через conda ).

Почему именно это происходит, я не знаю ... и, кстати, похоже, что это происходит только на OSX (т.е. не на моем компьютере с Ubuntu).

Для всех, кто пострадал от этого, это должно исправить:

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

Сообщите мне, если это не сработает для вас.

Спасибо за глубокое погружение (еще раз!) @Lesteve

Я думал, что мы никогда не докопаемся до сути этого, если честно :)! Хорошо, это не совсем дно, но, насколько мне известно, оно достаточно низкое.

Я должен признать, что все еще хотел бы понять, что происходит в numpy, установленном как с pip, так и с conda ...

Привет
Я пробовал две установки, где

  • TSNE хорошо работает с одной настройкой (где Tensorflow деактивирован, Python-3.x), однако,

  • TSNE не работает с другой настройкой (где активирован Tensorflow, Python 2.x).

Сетап, в котором хорошо работает TSNE:

Терминал:

Macbook:~ BG$ which jupyter
/Users/BG/anaconda/bin/jupyter

Блокнот Юпиера:

import sys
print (sys.version)

>

3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]

Примечание: я пробовал

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

чтобы TSNE хорошо работал с деактивированным Tensorflow.
Однако с новой настройкой ниже (где я должен использовать Tensorflow) это больше не работает.
——-———-———-———-———-———-———-———-

Настройка, при которой TSNE не работает:

Терминал:

Macbook:~$ source activate tensorflow
(tensorflow) Macbook:~$ which jupyter
/Users//anaconda/envs/tensorflow/bin/jupyter
(tensorflow) Macbook:~$ 

Блокнот Jupyer:

import sys
print (sys.version)

>

2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

Ошибка :
ValueError: array must not contain infs or NaNs

Какие-либо предложения ? большое спасибо

Интересно. Я думаю, это не имеет ничего общего с тензорным потоком; я предполагаю, что

[GCC 4.2.1, совместимый с Apple LLVM 4.2 (clang-425.0.28)]

против

[GCC 4.2.1, совместимый с Apple LLVM 6.0 (clang-600.0.57)]

виноват !?

Спасибо за ответ :) Любые предлагаемые решения / to_do_list?

Нужно использовать оба
Tensorflow и
ЦНЕ
в блокноте Jupyter ....

Кстати: просто попробовал «from __future__ import Division» в Python 2.x и не решил проблему.

Хм, не уверен, поможет ли это - лично я больше не получаю эту загадочную проблему с

Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 20:51:01) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin

Я тоже использую Tf (теперь 1.0), и у меня больше нет этой проблемы Error: ValueError: array must not contain infs or NaNs когда я выполняю

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

который раньше не работал.

Возможно, попробуйте создать новую среду python 3.5 и попробуйте приведенный выше фрагмент, чтобы убедиться, что он работает без ошибок:

conda create -n yourenv python=3.5 numpy scipy scikit-learn
source activate yourenv
pip install tensorflow(-gpu)

Привет, расбт,
Да, я заставил TSNE работать на Python 3.5.
Однако по какой-то другой причине мне лучше использовать Python 2.7, поэтому я должен продолжить изучение ... скрестить пальцы

Спасибо за вашу помощь.

У вас установлен старый дистрибутив Miniconda / Anaconda 2.7? В этом случае, возможно, подумайте об установке одного из более свежих или обновите свой корень conda или Python по умолчанию и попробуйте еще раз (или создайте новый env py 27, заменив 3,5 на 2,7 в conda create -n yourenv python=3.5 numpy scipy scikit-learn )? (не уверен, действительно ли это причина, но я думаю, что LLVM 4.2 (clang-425.0.28) может быть проблемой; поскольку ошибка, похоже, не возникает через [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] )

Обновление: TSNE (недоумение = 30, n_components = 2, init = 'pca', n_iter = 1000, method = 'exact' ) заставить его работать ...
Метод = 'точный' был уловкой.

Также была эта проблема. Мне кажется, что использование method = 'Exact' работает, но так мучительно медленно. Неужели люди не нашли другого решения?

Вы читали https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264029983 и https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264087057 ?

Единственный способ воспроизвести эту проблему - установить numpy с pip и conda в одной среде conda. Если вы создаете среду conda с нуля, у вас не должно возникнуть этой проблемы.

Если ваша проблема не соответствует этому описанию, опубликуйте точные команды, которые вы запускали для создания среды conda, чтобы мы могли попытаться воспроизвести.

Привет,
Я прочитал приведенные выше комментарии и могу воспроизвести это. Я повторно запустил код несколько недель назад, и теперь появляется эта проблема. Вот минимальный пример, который воспроизводит эту проблему:

from sklearn.manifold import TSNE
a = [[1,2,3],[4,5,6], [7,8,9]]
TSNE(n_components=2,).fit_transform(a)

И выход

import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)

является

Darwin-16.5.0-x86_64-i386-64bit
Python 3.6.0 |Anaconda 4.3.0 (x86_64)| (default, Dec 23 2016, 13:19:00) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]
NumPy 1.12.1
SciPy 0.19.0
Scikit-Learn 0.18.1

Опять же, изменение метода на точное ( TSNE(method='exact') ) избавляет от ошибки.

В целом, я заметил совершенно разные результаты при использовании TSNE sklearn (с идентичной недоумением и другими параметрами) из реализации bh, опубликованной Лоренсом ван дер Маатеном, и версии MATLAB. Интересно, а может быть связь?

Это исправило это. Приношу свои извинения - я отдельно удалил переустановленные numpy, scikit learn и scipy, но не так, как в 6665.

У меня была та же проблема, что и здесь, и я не использую conda.

Моя версия Python устанавливается через brew на macOS Sierra 10.12.4

Python 3.6.1
scipy==0.19.0
scikit-learn==0.18.1
numpy==1.11.1

Добавление mode='exact' решило мою проблему.

@lesteve : у меня была эта ошибка при использовании описанной вами настройки (установлены две версии numpy). простое обновление conda install numpy до той же версии, что и установка pip (1.12.1), помогло мне. Я удалил установку pip numpy, поскольку я не собирался иметь две версии :)

@lesteve : Спасибо за решение! У меня была эта ошибка, и я нашел это обсуждение. Исправьте это сразу после удаления дублированной версии numpy.

Репликация Я удалил pip install numpy и обновил conda.

Дарвин-16.7.0-x86_64-i386-64bit
('Python', '2.7.13 | Anaconda custom (x86_64) | (по умолчанию, 20 декабря 2016 г., 23:05:08) \ n [Apple LLVM 6.0, совместимый с GCC 4.2.1 (clang-600.0.57)]')
('NumPy', '1.13.1')
('SciPy', '0,19.0')
('Scikit-Learn', '0.18.1')

На моей Linux-машине вроде нормально: Linux:
Linux-3.0.101-0.47.71-по умолчанию-x86_64-с-SuSE-11-x86_64
('Python', '2.7.12 | Anaconda 2.3.0 (64-разрядная версия) | (по умолчанию, 2 июля 2016 г., 17:42:40) \ n [GCC 4.4.7 20120313 (Red Hat 4.4.7-1) ] ')
('NumPy', '1.12.1')
('SciPy', '0,19.1')
('Scikit-Learn', '0.18.1')

@wolfiex, так ты и сделал

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

В некотором роде я рекомендую вам обновить до scikit-learn 0.19, в котором есть некоторые исправления в t-SNE.

теперь та же ошибка

Привет @rahulsnair , не возражаете ли вы открыть новый выпуск с воспроизводимым кодом, вашей трассировкой и версиями, которые вы используете? Это довольно старая проблема, и код сильно изменился. Благодаря!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги