Scikit-learn: t-SNE gagal dengan array tidak boleh mengandung infs atau NaNs (khusus OSX)

Dibuat pada 15 Apr 2016  ·  108Komentar  ·  Sumber: 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')

Saat mencoba menjalankan t-SNE

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

Namun

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

Jejak Tumpukan Penuh:


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
Bug

Komentar yang paling membantu

Bagi siapa pun yang terpengaruh oleh ini, ini harus memperbaikinya:

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

Beri tahu saya jika itu tidak berhasil untuk Anda.

Semua 108 komentar

Sama dengan ('Scikit-Learn', '0.18.dev0')

Apakah Anda keberatan membagikan data X Anda dengan saya?

Oke, di mana dan dalam format apa Anda suka?

Pada 17 Apr 2016, pada 09:11, 康 洋[email protected] menulis:

Apakah Anda keberatan membagikan data X Anda dengan saya?

-
Anda menerima ini karena Anda yang membuat utas.
Balas email ini secara langsung atau lihat di GitHub https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -210968577

Email saya adalah [email protected]
Seperti yang saya ketahui, ada fungsi numpy.save untuk menyimpan array ke file biner dalam format .npy ~~

Saya menguji data Anda di ubuntu 14.04 LTS dengan
Python == 2.7.6
scikit-learn == 0.17.1
numpy == 1.8.2
scipy == 0.13.3
Tidak masalah dan tidak menaikkan ValueError. Kode tesnya adalah:
`impor numpy
a = numpy.load ('/ root / test.npy')
mencetak bentuk
print numpy.isnan (a) .all () #False
print numpy.isfinite (a) .all () #True
print numpy.isinf (a) .all () #False

dari sklearn.manifold import TSNE
proj = TSNE (). fit_transform (a) # [[2.35503527e + 00 1.15976751e + 01] .... [3.29832591e + 00 8.98212513e + 00]]
cetak proj`


Kemudian saya memutakhirkan numpy, scipy ke 1.11.0, 0.17.0 dan menguji dengan kode yang sama dan juga tidak menimbulkan kesalahan apa pun.

Direproduksi untuk 3,5 dengan anaconda di bawah 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

Contoh run:

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

Terima kasih @ ivan-krukov, tapi saya gagal mereplikasi dengan Python 3.3. Akan mencoba 3.5

Ini tidak berlaku untuk linux (4.4.0-21, Ubuntu 16.04) dengan paket yang sama di bawah 3.5.

Saya menggunakan El-Capitan, tetapi saya gagal menjalankan dan menjalankan instalasi Python 3.5.

Apakah ada pembaruan tentang ini?

Saya memiliki masalah pada kumpulan data saya, di Anaconda, Py 3.5, sklearn 0.17.1, OSX El Capitan.
Saya dapat mereproduksi kesalahan dengan contoh yang diberikan oleh @ ivan-krukov.

Masalah yang sama. Python 2.7.6 di OS X El Capitan pada 0.17. Mencoba kode yang sama di Linux menggunakan Python 2.7.6 dan 0.17, dan berhasil.

Masalah yang sama.
OSX El Capitan Python 3.5.1
scikit-learn == 0.17.1
scipy == 0.17.1

Saya memiliki masalah yang sama dan akan sangat menghargai perbaikan (atau solusi?)
Versi Sistem: 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. versi 0.17.1

Saya juga dapat mereproduksi bug dengan sampel kode dari ivan-krukov

Masalah yang sama di OS X EI Capitan menggunakan Python 3.5

Versi Sistem: OS X 10.11.5
Python 3.5.1 :: Continuum Analytics, Inc.
numpy. versi 1.11.1
licik. versi 0.16.0
sklearn. versi 0.17.1

Permasalahan yang sama. Meskipun saya perhatikan bahwa itu hanya terjadi untuk subset dari dataset saya dan tidak dengan semuanya . Artinya, jika saya melakukan TSNE pada seluruh kumpulan data, itu berfungsi , jika saya melakukannya pada kumpulan yang dikurangi itu tidak.

O_o ;; Ini hanya masuk, jika saya mengulangi subset 'rusak' yang sama yang tidak berfungsi (melalui daftar * 10) maka itu berhasil. Mengalikan setiap vektor dengan 10 tidak akan berhasil, tetapi menggandakan tanggal tidak akan berhasil. hanya menggandakan panjang daftar tidaklah cukup. Mungkin ini semacam derajat kebebasan memeriksa amuk?

@ ivan-krukov Hari ini saya gigit jari dan memasang VM El Capitan. Sayangnya saya tidak dapat mereproduksi masalah Anda.

@Concomitant dapatkah Anda mereproduksi kesalahan pada contoh mandiri yang diberikan di https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -218365487?

Saya menggunakan El-Capitan, tetapi saya gagal menjalankan dan menjalankan instalasi Python 3.5.

@jnothman tampaknya tidak hanya terjadi pada Python 3.5 jadi jika Anda dapat mencoba mereproduksi dengan Python 2.7 (cuplikan: https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment-218365487 ) itu akan bagus.

@lesteve Saya dapat mereproduksi masalah tersebut.

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

Namun, mengikuti kode yang sama:

>>> 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]])

Aneh.

Saya tidak dapat mereproduksi baik dengan python 3.5.1, numpy 1.11.1, scipy 0.17.1 dan scikit-learn 0.17.1 dari miniconda (dengan MKL) pada kotak virtual dengan OSX El Capitan. Saya akan mencoba perangkat keras mac asli nanti.

Juga @joelkuiper dan @Concomitant dapatkah Anda memeriksa apakah Anda dapat mereproduksi masalah pada status saat ini dari cabang master scikit-learn?

@lesteve dan lainnya Saya tidak dapat mereproduksi kesalahan dengan potongan yang diposting sebelumnya pada master terbaru dengan python 2.7.

Sistem Informasi:

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')

Saya mencoba lagi pada mac nyata yang menjalankan OSX El Capitan 10.11.3 (dengan scipy dan scikit-learn numpy terbaru anaconda, pengaturan yang sama seperti yang dilaporkan oleh @Concomitant di https://github.com/scikit-learn/scikit-learn/issues / 6665 # Issuecomment-229703129) tetapi juga tidak dapat mereproduksi masalah (coba jalankan cuplikan beberapa kali).

Yang aneh adalah bahwa meskipun baris np.random.seed(1) saya mendapatkan hasil yang berbeda untuk output fit_transform . Ini mungkin bug itu sendiri.

Apa yang aneh adalah meskipun baris np.random.seed (1) saya mendapatkan hasil yang berbeda untuk output dari fit_transform. Ini mungkin bug itu sendiri.

Sebenarnya saya membaca cuplikan kode @Concomitant terlalu cepat: alih-alih random.seed(1) seharusnya np.random.seed(1) jika tidak, RNG numpy tidak direseed dengan benar dan seseorang tidak bisa mendapatkan hasil deterministik.

Juga sekarang saya menyadari bahwa saya membaca seluruh diskusi terlalu cepat dan bug hanya terjadi dengan python 2.7. Akan mencoba lagi.

Saya juga tidak dapat mereproduksi dengan python 2.7.12 dari conda di OSX 10.11.3.

Sebenarnya @Ekliptor dapat mereproduksi masalah dengan python 3.5.1 dari conda sehingga mungkin juga tidak terkait dengan versi Python. Mungkin itu tergantung pada versi minor OSX. Akan meningkatkan dan mencoba lagi.

Saya juga tidak dapat mereplikasi dengan OSX 10.11.5. Saya mencoba keduanya dengan Python 2.7.12 dan 3.5.2 yang diinstal dengan conda bersama dengan numpy 1.11.1, scipy 0.17.1 dan scikit-learn 0.17.1.

Saya tidak tahu harus berbuat apa. Jika salah satu dari Anda dapat mereproduksi masalah, coba temukan benih acak numpy yang memicu masalah (menggunakan np.random.seed(my_seed) alih-alih random.seed(1) dalam cuplikan di atas) dan komunikasikan nilainya di sini (bersama dengan versi OSX dan paket python Anda).

Saya dapat mengonfirmasi bahwa masalah telah diperbaiki dengan versi terbaru. Saya tidak bisa mereproduksi lagi seperti sebelumnya.
Saya hanya memperbarui numpy:
numpy.version.version 1.11.1

Kepada semua orang yang bekerja dengan Tensorflow, saya dapat menambahkan:
Ketika saya mencoba memplot sampel yang sangat kecil (<200 poin) terkadang saya masih mengalami kesalahan ini. Setelah meningkatkan ukuran sampel, saya meneruskan ke tsne.fit_transform () itu selalu berhasil.

Terima kasih @Ekliptor karena telah memeriksa apakah berfungsi dengan master scikit-learn. @joelkuiper dan @Concomitant apakah Anda mengonfirmasi bahwa master scikit-learn juga berfungsi untuk Anda? Jika demikian, kami dapat menutup masalah ini.

Saya menginstal master, potongan kode berjalan dengan bersih sekarang.

sepertinya bekerja untuk semua orang sekarang. penutupan.

Maaf, tapi saya masih mendapatkan ini di Python 3.5.1, scikit 0.17, scikit-learn 0.18 (commit 9e913c04d748), dan Numpy 1.11.1 di Mac OS 10.11.5.

@dmyersturnbull apakah Anda mendapatkan kesalahan saat menjalankan cuplikan dari https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -218365487?

@lesteve saya lakukan dengan potongan yang tepat itu, ya. Namun, saya tidak lagi mendapatkannya setelah membersihkan instalasi Anaconda saya dan menginstal ulang dari awal dengan Python 3.5.2.

Saya mendapatkan masalah yang sama dengan Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 di Mac OS X El Capitan 10.11.3. Ini berfungsi ketika saya memiliki lebih dari 2100 poin tetapi gagal untuk nilai yang lebih rendah.

Saya mendapatkan masalah yang sama dengan Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 di Mac OS X El Capitan 10.11.3. Ini berfungsi ketika saya memiliki lebih dari 2100 poin tetapi gagal untuk nilai yang lebih rendah.

Secara analogis gagal untuk nilai poin rendah

Tolong buka kembali

Saya mendapatkan masalah yang sama di OS X 10.11.6, python 3.5.1, sklearn 0.17.1 dan numpy 1.11.1.
Pada kumpulan data ini: https://dl.dropboxusercontent.com/u/103591/vals.out (dengan np.savetxt)

Secara analogis gagal untuk nilai poin rendah

@Lucidyan Saya tidak mengerti apa yang Anda maksud dengan itu.

Saya mendapatkan masalah yang sama di OS X 10.11.6, python 3.5.1, sklearn 0.17.1 dan numpy 1.11.1.
Pada kumpulan data ini: https://dl.dropboxusercontent.com/u/103591/vals.out (dengan np.savetxt)

@pbnsilva dapatkah Anda mencoba cuplikan yang diposting di bawah ini? Anda mungkin perlu menjalankannya beberapa kali karena sayangnya seed tidak disetel dengan benar (Anda perlu menggunakan np.random.seed daripada 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)

Poin bonus jika Anda dapat menemukan argumen seed untuk np.random.seed dan argumen random_state menjadi TSNE yang membuat cuplikan menjadi deterministik.

Sebagai alternatif, beberapa orang melaporkan bahwa bug ini telah diperbaiki di master. Bisakah Anda mencoba membangun scikit-learn master untuk melihat apakah masalahnya hilang?

@lesteve Maksud saya, saya mendapatkan kesalahan yang sama dengan sejumlah kecil contoh, dengan parameter sistem yang sama (Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 di Mac OS X El Capitan 10.11.3)

@pbnsilva dapatkah Anda mencoba cuplikan yang diposting di bawah ini? Anda mungkin perlu menjalankannya beberapa kali karena sayangnya seed tidak disetel dengan tepat (Anda perlu menggunakan np.random.seed daripada random.seed).

Saya mencobanya, dan gagal dengan X_SIZE <= 1750 (Y_SIZE = 20, n_components = 2 menjadi konstanta). jika saya mulai mengubah konstanta (meningkatkan) dengan X_SIZE tetap = 1750, gagal juga.

@Lucidyan dapatkah Anda mencoba potongan yang sama dengan scikit-learn master dan melihat apakah itu juga gagal?

ya tidak berfungsi untuk saya (numpy 1.11.1, El capitan.10.11, sklearn 0.17.1, python 3.5.2) mengganggu kode lama yang berhasil. apa yang kalian ubah ...?

@ act65 kami sangat ingin untuk menyelesaikan ini tetapi kami belum dapat mereproduksi dan tampaknya kami mendapatkan laporan yang beragam dari pengguna sejauh ini sayangnya.

Jadi jika Anda belum melakukannya (sayangnya kami bukan pembaca keberatan dan "tidak bekerja untuk saya" tidak memberi tahu kami apa yang Anda coba) dapatkah Anda mencoba menjalankan cuplikan yang disebutkan di atas di https://github.com/scikit-learn / scikit-learn / issues / 6665 # Issuecomment -243782185. Coba jalankan beberapa kali untuk berjaga-jaga karena benih acak tidak disetel dengan benar dan mungkin ada beberapa keacakan tersisa di cuplikan.

Lalu apa yang akan sangat bagus jika Anda dapat mencoba dengan kandidat rilis 0.18 yang mudah dipasang (sangat disarankan untuk melakukannya di virtualenv atau conda env terpisah):

pip install --pre scikit-learn -U

Diedit: 0,18 telah dirilis sehingga Anda dapat menggunakan (tidak perlu menggunakan --pre ):

pip install scikit-learn -U

dan jalankan kembali cuplikan untuk melihat apakah sudah diperbaiki di 0,18 karena beberapa pengguna telah melaporkan di utas ini.

0.18 akan dirilis dalam beberapa minggu jika bukan beberapa hari sehingga Anda tahu apa yang harus Anda lakukan jika Anda ingin membantu kami memahami hal ini sebelum rilis ;-).

ya saya buruk, seharusnya lebih jelas. (Saya telah mencoba kira-kira hal yang sama yang dilakukan orang lain, hanya pada MNIST).

bagaimanapun, itu berhasil! terima kasih :)
pip install --pre scikit-learn -U memperbaikinya

Oke, terima kasih telah melaporkan kembali dan senang mendengar bahwa ini telah diperbaiki untuk Anda dalam kandidat rilis 0,18! Ini sepertinya cocok dengan apa yang dilaporkan orang lain ketika mereka mengatakan itu diperbaiki di master.

Hanya untuk kelengkapan, disarankan untuk tetap menggunakan versi rilis untuk kode produksi, jadi Anda mungkin perlu menunggu sedikit lebih lama hingga rilis 0.18 keluar.

@lesteve
Saya mencoba potongan pada versi 0.18rc2, yang diinstal oleh

pip install --pre scikit-learn -U

Dan sepertinya berhasil! Bersulang!

Terima kasih @Lucidyan karena telah mencobanya.

Maaf, saya masih mendapatkan kesalahan ini dengan potongan kode di atas setelah memutakhirkan ke scikit-learn 0.18 ( pip install --pre scikit-learn -U ) di conda env.

Ini info sistem saya:
OS X El Capitan Versi 10.11.4
Python 2.7.12
sklearn 0.18 (mendapat error yang sama pada sklearn 0.17.1 juga)
numpy 1.11.1 (mendapat error yang sama pada numpy 1.11.2 juga)
scipy 0.18.1

Namun, saya menjalankan potongan kode yang sama di sistem Linux, saya tidak mendapatkan kesalahan.
Info sistem dari sistem Linux adalah:
Ubuntu 14.04.5 LTS (GNU / Linux 3.13.0-91-generik x86_64)
Python 2.7.6
sklearn 0.18.0
numpy 1.11.2
scipy 0.13.3

Coba uninstal dan instal ulang numpy, scipy, dan scikit-learn. Jika masih gagal, coba di virtualenv yang berbeda (atau lingkungan conda jika Anda menggunakan conda) untuk memastikan ada yang tidak beres di lingkungan Python Anda.

Masih mendapatkan kesalahan yang sama ( ValueError: array must not contain infs or NaNs ) di sklearn 0.18 ( 0.18-np111py35_0 ) melalui conda. Roda pip tampaknya berfungsi dengan baik!

Masih mendapatkan kesalahan yang sama (ValueError: array tidak boleh berisi infs atau NaNs) di sklearn 0.18 (0.18-np111py35_0) melalui conda. Roda pip tampaknya berfungsi dengan baik!

Hmmm menarik ... bisakah Anda mencoba menggunakan paket conda tanpa mkl, yaitu sesuatu seperti conda create -n sklearn_nomkl python scikit-learn nomkl sehingga kita dapat melihat apakah itu hal MKL vs openblas?

Juga poin bonus jika Anda dapat memberikan potongan yang mereproduksi masalah dengan benih acak tetap (yaitu menggunakan np.random.RandomState(some_int) ) yang dapat digunakan sebagai potongan referensi di masa mendatang. Sampai sekarang potongan yang kita miliki adalah non-deterministik ( random.seed digunakan dan tidak memiliki pengaruh seed numpy.random).

Tentu saja, tak masalah. Ini mungkin memang masalah BLAS, conda create -n sklearn_nomkl python scikit-learn nomkl env berfungsi dengan baik.

Mengenai potongannya ... ini menjadi menarik. Misalnya,

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)

mereproduksi masalah di mesin saya. Namun, ketika saya mengganti digits_tsne_train = tsne.fit_transform(X_train) dengan digits_tsne_train = tsne.fit_transform(digits.data) tampaknya baik-baik saja. Akan lebih baik untuk menemukan contoh yang lebih ringan mungkin, untuk menambahkan kasus khusus ini ke tes travis.

EDIT: Hal yang sama berlaku untuk iris. iris.data berfungsi dalam fit_transform, kumpulan data terpecah ( X_train ) tidak. Mungkin ada hal lucu yang terjadi di train_test_split . Namun, baik X_train dan iris.data tampaknya mengambang 64 array ...

Bagaimana dengan cuplikan dari https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -243782185, Anda tidak menemukan cara untuk membuatnya deterministik dan masih gagal di mesin Anda?

Potongannya

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)

mereproduksi kesalahan (tetapi berfungsi dengan baik di nomkl env)

OK terima kasih banyak untuk ini, setidaknya kita memiliki cuplikan deterministik sekarang. Sebagai catatan, dapatkah Anda memposting keluaran dari cuplikan ini:

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__)

Juga, hanya demi kewarasan, dapatkah Anda memastikan bahwa Anda dapat mereproduksi masalah di lingkungan konda yang segar.

Sejujurnya, saya tidak yakin ke mana kita pergi dari ini. Saya belum mencoba sejak itu tetapi saya tidak dapat mereproduksi di kotak El Capital Virtual, @ogrisel juga tidak dapat mereproduksi di laptop OSX, jadi pada saat itu dia mengatakan mungkin ada beberapa masalah khusus perangkat keras yang terlibat.

Tentu,

mesin yang menyebabkan masalah ini:

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

(mengujinya di lingkungan konda segar)

mungkin ada beberapa masalah khusus perangkat keras yang terlibat.

Saya pikir Anda mungkin menyukai sth! Saya mencobanya di mac saya yang lain, dan berfungsi dengan baik di sana. Satu-satunya perbedaan adalah output di atasnya berjalan pada kernel yang lebih lama ( Darwin-15.6.0-x86_64-i386-64bit ). Belum memperbarui mac kedua ke macOS Sierra, yang berjalan di mesin lama yang mengalami masalah ini. Bisa jadi terkait OS. Saya akan memutakhirkan mesin kedua ke Sierra pada bulan depan atau lebih (saya sedang mengerjakan proyek dan tidak ingin merusak barang), tetapi saya dapat memberi tahu Anda jika pembaruan ke Sierra mengarah ke masalah ini di mesin kedua (atau mungkin orang lain dengan macOS Sierra dapat mengujinya sehingga kami sekarang jika itu adalah OS)

Mengingat bahwa masalah telah dilaporkan pada versi OSX yang berbeda, saya agak ragu ini hanya masalah versi OSX. Firasat IIRC

Cara lain (yang lebih memakan waktu) untuk men-debug masalah ini adalah dengan melacak di mana NaN muncul dalam kode.

Firasat IIRC

Hm, apa perbedaan antara versi conda scikit-learn dengan roda pip? Karena yang terakhir sepertinya bekerja pada mesin yang sama. Mungkin entah bagaimana terkait dengan conda

Cara lain (yang lebih memakan waktu) untuk men-debug masalah ini adalah dengan melacak di mana NaN muncul dalam kode.

Saya perhatikan bahwa gradien di https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L387 meledak, hingga menjadi -inf dalam satu posisi setelahnya iterasi ke-25 di 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
...

Di mesin lain (yang berfungsi dengan baik), semua gradiennya <0 setelah iterasi yang sama. Jadi, entah bagaimana fungsi _gradient_descent tidak berfungsi dengan baik (mungkin karena beberapa hal BLAS).

Hm, apa perbedaan antara versi conda scikit-learn dengan roda pip? Karena yang terakhir sepertinya bekerja pada mesin yang sama. Mungkin entah bagaimana terkait dengan conda

Roda pip menggunakan OpenBLAS dan Anda tidak memiliki masalah saat menggunakan OpenBLAS dengan conda (melalui trik nomkl ) jadi ini memang terlihat seperti masalah MKL, yang di atas itu kemungkinan khusus CPU.

Omong-omong, kerja bagus men-debug masalah! Poin bonus jika Anda berhasil mengisolasi masalah lebih lanjut (misalnya dengan membuat acar data sebelum iterasi inf muncul). Masalahnya sangat mungkin muncul di beberapa kode cython di sklearn / manifold / _barnes_hut_tsne.pyx.

Bukankah masalah ini harus dibuka kembali mengingat temuan terbaru? Saya memukulnya juga dan juga berhasil melewatinya dengan trik nomkl, tetapi terasa seperti bug aktif vs. bug tertutup, bukan?

Orang lain yang telah mencapai ini: https://discussions.udacity.com/t/assignment-5-error-in-the-main-code-valueerror-array-must-not-contain-infs-or-nans/178187 / 7

Anda benar, membuka kembali. Yang ini serius, tampaknya khusus perangkat keras dan tidak ada pengembang inti yang dapat mereproduksinya. Satu-satunya cara untuk memperbaikinya adalah jika orang yang mengalami masalah menginvestasikan waktu untuk men-debug masalah lebih lanjut.

Omong-omong, kerja bagus men-debug masalah! Poin bonus jika Anda berhasil mengisolasi masalah lebih lanjut (misalnya dengan mengambil data sebelum iterasi inf muncul). Masalahnya sangat mungkin muncul di beberapa kode cython di sklearn / manifold / _barnes_hut_tsne.pyx.

Saya dengan senang hati akan memeriksanya lebih jauh pada bulan Desember setelah semua tenggat waktu November ... Namun, bahkan ini dapat diisolasi lebih lanjut, saya ingin tahu apakah ada perbaikan untuk masalah khusus perangkat keras semacam itu. Mungkin, sampai ini sepenuhnya terselesaikan, mungkin berguna untuk memunculkan pengecualian / peringatan yang lebih spesifik jika gradien berisi infs dengan catatan tentang masalah ini?

Saya baru saja membuat virtualenv conda baru dan membangun versi devp dari sklearn dari kode sumber yang baru saja bercabang dari cabang master sciki-learn, kesalahannya menghilang. Apakah devp sklearn dibuat dari kode sumber menggunakan OpenBLAS, bukan MKL?

Saya senang melihatnya lebih jauh pada bulan Desember setelah semua tenggat waktu November ...

Kedengarannya bagus, terima kasih banyak!

Namun, bahkan ini dapat diisolasi lebih lanjut, saya ingin tahu apakah ada perbaikan untuk masalah khusus perangkat keras tersebut.

Tidak yakin tentang perbaikan, satu harapan adalah jika kita dapat mengubah kode cython kita untuk mengatasi masalah setelah kita mengisolasinya. Juga bisa menjadi masalah openblas dan itu akan bagus melaporkannya ke hulu, terutama karena roda menggunakan openblas.

Mungkin, sampai ini sepenuhnya terselesaikan, mungkin berguna untuk memunculkan pengecualian / peringatan yang lebih spesifik jika gradien berisi infs dengan catatan tentang masalah ini?

Menambahkan beberapa saran ke pesan kesalahan (hanya di OS X), kedengarannya seperti ide yang bagus, tapi saya tidak yakin apa yang harus dikatakan, mungkin "pertimbangkan untuk menggunakan conda dan instal scikit-learn dengan MKL" atau sesuatu seperti ini.

Apakah devp sklearn dibuat dari kode sumber menggunakan OpenBLAS, bukan MKL?

@zhongyuk tergantung pustaka mana yang telah Anda instal. Satu cara untuk mengetahui setelah Anda membangun scikit-learn dari sumber adalah dengan menjalankan yang setara dengan ldd (Google sepertinya mengatakan otool -L ) pada sklearn/cluster/_k_means.so (nama akan berbeda jika Anda menggunakan Python 3, misalnya sklearn/cluster/_k_means.cpython-35m-x86_64-linux-gnu.so ). Di mesin Ubuntu saya misalnya, saya mendapatkan ini:

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)

Jadi bisa dilihat dari baris ketiga, yang menggunakan MKL.

tapi saya tidak yakin apa yang harus dikatakan, mungkin "pertimbangkan untuk menggunakan conda dan instal scikit-learn dengan MKL" atau sesuatu seperti ini.

Saya hanya ingin menulis bahwa menurut saya Anda membaliknya: roda bekerja dengan baik dan masalah hanya terjadi ketika saya menggunakannya melalui conda dengan MKL ... Sekarang, saya rasa saya punya kabar baik dalam beberapa hal: Saya hanya ingin jalankan kembali contoh di atas yang sebelumnya menyebabkan masalah ini dikonfirmasi

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)

dan saya tidak lagi mendapatkan masalah ini. Saya ingat bahwa saya menginstal ulang miniconda minggu lalu karena beberapa masalah lain. Apakah menurut Anda ini mungkin terkait dengan beberapa masalah di conda lama? Akan lebih bagus jika beberapa orang lain yang memiliki masalah ini mungkin juga dapat mencoba memperbarui / menginstal ulang conda dan memeriksa apakah itu menyelesaikan masalah bagi mereka. Sementara itu, saya akan mencoba untuk melihat apakah saya dapat menemukan backupstate lama untuk mengetahui versi conda mana yang telah saya instal sebelumnya. (sekarang, saya memiliki conda 4.2.12)

Hanya ingin mengatakan bahwa saya menjalankan otool -L pada sklearn/manifold/_barnes_hut_tsne.so (Saya menganggap ini adalah file terkompilasi t_sne.py?), Sepertinya memang menggunakan BLAS. Dan yang melempar kesalahan sepertinya menggunakan MKL ..

Versi conda yang saya miliki adalah 4.2.13, baik env yang melempar kesalahan dan env dengan sklearn yang dibangun sumber (yang tidak membuang kesalahan) ada di dalam conda.

Hm, menarik, jadi ini bukan masalah conda ... Penasaran mengapa ini berhasil untuk saya sekarang: /
(yang bisa saya pikirkan yang telah berubah (kecuali untuk menginstal ulang conda) adalah me-reboot: P)

Saya hanya ingin menulis bahwa saya pikir Anda membaliknya: roda berfungsi dengan baik dan masalah hanya terjadi ketika saya menggunakannya melalui conda dengan MKL

Ya, maaf soal itu. Saya akan mengedit judul terbitan untuk mencoba mengingatnya dengan benar di lain waktu.

Hm, menarik, jadi ini bukan masalah conda ... Penasaran mengapa ini berhasil untuk saya sekarang: /
(yang bisa saya pikirkan yang telah berubah (kecuali untuk menginstal ulang conda) adalah me-reboot: P)

Hmmm, tebakan acak mungkin versi mkl, meskipun jika saya yakin output conda info mkl versi mkl terbaru (11.3.3) adalah dari 2016-05-13.

@zhongyuk mencoba untuk membangun scikit-learn di dalam conda env yang menggunakan mkl, saya yakin ini seharusnya cukup untuk mkl untuk diambil (mungkin ide yang bagus dalam hal ini untuk melakukan make clean dan kemudian make in untuk membangun kembali dari awal).

@lesteve Saya membangun scikit-learn di dua lingkungan virtual conda dari kode sumber (rilis 0.18 cabang), yang menggunakan MKL memang melempar kesalahan; yang menggunakan libBLAS tidak membuang kesalahan.

Output menjalankan otool -L pada sklearn/manifold/_barnes_hut_tsne.so ada di sini (seandainya versi MKL memberi Anda petunjuk?)

``@rpath/libmkl_intel_lp64.dylib (versi kompatibilitas 0.0.0, versi 0.0.0 saat ini)
@ rpath / libmkl_intel_thread.dylib (versi kompatibilitas 0.0.0, versi 0.0.0 saat ini)
@ rpath / libmkl_core.dylib (versi kompatibilitas 0.0.0, versi 0.0.0 saat ini)
@ rpath / libiomp5.dylib (versi kompatibilitas 5.0.0, versi saat ini 5.0.0)
/usr/lib/libSystem.B.dylib (versi kompatibilitas 1.0.0, versi saat ini 1226.10.1)

@zhongyuk bagus! Untuk kelengkapan, dapatkah Anda memposting output conda list '(mkl|cython|numpy|scipy)$' (di lingkungan konda MKL Anda)? Sementara kami melakukannya, informasi CPU Anda ( sysctl -n machdep.cpu.brand_string menurut Google) dan informasi platform Anda ( python -c 'import platform; print(platform.platform())' ) akan sangat bagus.

Apa yang akan sangat bagus adalah melanjutkan di mana @rabst berhenti dan lebih jauh mengisolasi masalahnya:
https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -258311980

Karena ini terkait dengan BLAS, firasat saya adalah ada yang tidak beres di baris ini yang menyebabkan gradien memiliki beberapa nilai yang tidak terbatas.

@lesteve Output dari conda info lingkungan MKL:

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 

Info CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Info platform: Darwin-15.4.0-x86_64-i386-64bit

Saya akan melihat masalah ledakan gradien yang ditemukan @rabst di komentar lain dan baris yang Anda tunjukkan minggu ini dan / atau minggu depan, saya akan terus memberi tahu semua orang tentang temuan menarik.

@zhongyuk Jika membantu, saya memiliki pengaturan yang sangat mirip (tidak dapat mereproduksi masalah lagi sejak menginstal ulang miniconda), kecuali bahwa saya memiliki macOS Sierra dan bukan OS X El Capitan dan saya memiliki 1.11.2 numpy dan bukan 1.11.1 .

@rasbt hmm, saya ingin tahu apakah masalahnya hilang di Sierra ... Saya belum ingin memutakhirkan OS b / z Saya pikir saya membaca di suatu tempat bahwa TensorFlow belum mendukung Sierra (bisa salah atau tidak lagi benar lagi karena saya tidak ingat di mana atau berapa lama saya membacanya)? Dan saya tidak ingin merusak proyek saya dengan ketergantungan TF

@zhongyuk Hm, sepertinya tidak mungkin ada kaitannya. Sebelum saya menginstal ulang miniconda, saya juga mengalami masalah di macOS Sierra. PS: Tensorflow berfungsi dengan baik untuk saya di Sierra, tetapi saya hanya melakukan CPU dan prototipe di Mac saya jadi saya tidak tahu tentang masalah GPU yang terkait dengan Sierra

@rasbt hmm, senang mengetahui bahwa TF berfungsi dengan baik di Sierra. Apakah Anda ingin menjalankan otool -L pada file sklearn/manifold/_barnes_hut_tsne.so di platform Anda untuk melihat perpustakaan matematika mana yang tidak digunakan di bawahnya? Setidaknya dengan cara itu kita mungkin tahu jika masalahnya hilang setelah menginstal ulang miniconda pada dasarnya terkait dengan perpustakaan matematika?

Saya mendapatkan yang berikut di _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 Hmm, itu sangat menarik. Ini menggunakan MKL juga. Saya tidak cukup tahu tentang perpustakaan matematika untuk berspekulasi apa artinya ini ... @lesteve mungkin dapat menyimpulkan lebih banyak dari ini?

Saya perhatikan bahwa di platform saya libmkl_intel_lp64.dylib tidak dimuat ... Mungkinkah itu yang menyebabkan masalah?

WOW ya! ini disebabkan oleh libmkl_intel_lp64.dylib tidak dimuat !!! Saya menemukan utas ini di stack overflow dan kemudian menjalankan conda install --debug mkl , lalu menjalankan otool -L pada file sklearn/manifold/_barnes_hut_tsne.so , lalu libmkl_intel_lp64.dylib dimuat, dan menjalankan cuplikan kode , kesalahan hilang! Punya lima kerja tim! @rachmawati

Jika ada orang lain yang dapat memeriksa platform mereka dan melihat apakah kesalahan telah hilang setelah memastikan libmkl_intel_lp64.dylib dimuat, itu akan bagus!

@lesteve Karena sepertinya banyak ppl yang mengalami masalah ini, dan sepertinya itu terkait dengan (beberapa versi?) conda tidak mengekstraksi perpustakaan MKL lengkap (pemahaman saya tentang situasi sejauh ini), meskipun tidak bug scikit-learn, menurut saya menambahkan semacam komentar atau peringatan atau pesan kesalahan ke pengguna (OS X) akan menyenangkan? Dengan begitu setidaknya mereka dapat memeriksa apakah MKL lib sepenuhnya diekstrak di platform mereka dan kemudian memperbaikinya jika tidak?

@zhongyuk luar biasa, senang mendengar Anda dapat mempersempitnya! Mudah-mudahan, itu hanya tautan yang rusak / pemasangan yang tidak lengkap dari libmkl_intel_lp64.dylib - itu akan luar biasa (dalam hal mengetahui apa yang terjadi) :). Itu juga akan menjelaskan mengapa ini bekerja untuk saya sekarang setelah menginstal ulang Miniconda ... Akan lebih bagus jika orang lain dapat mencoba "memperbaikinya".

Jika libmkl_intel_lp64.dylib disebutkan di atas benar-benar menyebabkan masalah ini, pertanyaan yang tersisa adalah bagaimana mengatasinya di scikit-learn. Maksud saya, "bug" ini agak mengerikan dan mungkin agak sulit bagi orang untuk mengetahui bahwa penyebabnya adalah libmkl_intel_lp64.dylib . Saya mungkin tidak akan menyuntikkan tambahan "jika gradien berisi pesan kesalahan + peningkatan inf" dalam kode di scikit-learn karena bisa sangat mengganggu kinerja. Namun, menurut saya menambahkan catatan atau komentar dalam instalasi dan / atau dokumen T-SNE adalah ide yang bagus.

Hanya ingin menambahkan pembaruan cepat: Saya memiliki 2 virtual envs di conda keduanya menggunakan MKL. Salah satunya dilengkapi dengan numpy 1.11.1 dan yang lainnya dilengkapi dengan numpy 1.11.2 . Menjalankan otool -L menunjukkan bahwa keduanya tidak memuat libmkl_intel_lp64.dylib . Setelah memastikan libmkl_intel_lp64.dylib dimuat, kesalahan menghilang di virtual env dengan numpy 1.11.2 . Namun, kesalahan tetap muncul di env dengan numpy 1.11.1 . Setelah memutakhirkan numpy menjadi 1.11.2, saya tidak dapat lagi mereproduksi kesalahan di lingkungan virtual conda. Karena kedengarannya rumit dan penyebab pasti dari kesalahan tersebut masih tidak jelas, saya berspekulasi bahwa ini mungkin komplikasi yang terjalin oleh pemuatan perpustakaan MKL yang tidak lengkap dan perpustakaan yang bergantung scikit-learn (mungkin numpy?). (Meskipun saya belum mencoba membuat virtualenv dengan MKL dan numpy 1.11.1 untuk melihat apakah ini akan mereproduksi kesalahan.)

Dan saya setuju dengan saran

@zhongyuk senang Anda telah memperbaikinya! Tampaknya menginstal ulang paket dengan conda dapat membantu tetapi saya khawatir sepertinya tidak ada gambaran yang sangat jelas tentang penyebab masalah :(.

Ini adalah kutu konda, bukan? Atau apakah ada yang mengalami bug tidak menggunakan conda?

Saya berhasil menemukan cara untuk mereproduksi menurut saya dengan memasang roda numpy dan kemudian scikit-learn melalui conda di atasnya (mendapat petunjuk dari output conda list di https://github.com/scikit- learn / scikit-learn / issues / 6665 # Issuecomment-262800762 di mana dua numpy terdaftar).

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

kemudian jalankan cuplikan dari https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -262800762.

Jadi sepertinya ini yang terjadi saat mixing numpy dipasang melalui pip dan conda. Dalam buku saya, ini bukanlah ide yang baik untuk mencampur pip dan conda untuk paket tertentu, tetapi saya rasa ini dapat terjadi tanpa disadari dengan mudah (misalnya Anda menginstal proyek yang bergantung pada numpy melalui pip, dan kemudian scikit-learn via conda ).

Mengapa hal ini terjadi Saya tidak tahu ... dan tampaknya hanya terjadi di OSX (bukan di kotak Ubuntu saya).

Bagi siapa pun yang terpengaruh oleh ini, ini harus memperbaikinya:

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

Beri tahu saya jika itu tidak berhasil untuk Anda.

Terima kasih untuk penyelaman mendalam (lagi!) @Lesteve

Saya pikir kami tidak akan pernah sampai ke dasar yang satu ini jujur ​​:)! Oke, ini tidak cukup di bagian bawah tetapi menurut saya cukup rendah.

Saya harus mengakui bahwa saya masih ingin memahami apa yang terjadi dalam numpy yang dipasang dengan pip dan kond ...

Hai
Saya mencoba dua pengaturan, di mana

  • TSNE bekerja dengan baik dengan satu pengaturan (di mana Tensorflow dinonaktifkan, Python-3.x), bagaimanapun,

  • TSNE tidak bekerja dengan pengaturan lain (di mana Tensorflow diaktifkan, Python 2.x).

Pengaturan tempat TSNE bekerja dengan baik:

Terminal:

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

Buku catatan Jupyer:

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)]

Catatan: Saya mencoba

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

agar TSNE bekerja dengan baik dengan Tensorflow dinonaktifkan.
Namun, dengan penyiapan baru di bawah ini (di mana saya harus menggunakan Tensorflow), ini tidak berfungsi lagi.
——-———-———-———-———————-———-———-

Pengaturan di mana TSNE tidak berfungsi:

Terminal:

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

Buku catatan 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)]

Kesalahan :
ValueError: array must not contain infs or NaNs

Ada saran? Terima kasih banyak

Menarik. Saya pikir ini tidak ada hubungannya dengan tensorflow; tebakan saya adalah itu

[GCC 4.2.1 Kompatibel dengan Apple LLVM 4.2 (clang-425.0.28)]

vs.

[GCC 4.2.1 Kompatibel dengan Apple LLVM 6.0 (clang-600.0.57)]

apakah pelakunya !?

Terima kasih atas tanggapannya :) Adakah solusi yang disarankan / to_do_list?

Perlu menggunakan keduanya
Tensorflow dan
TSNE
di notebook Jupyter ....

BTW: baru saja mencoba "dari divisi impor __future__" dengan Python 2.x dan tidak menyelesaikan masalah.

Hm, tidak yakin apakah itu membantu - secara pribadi, saya tidak mendapatkan masalah misterius ini lagi

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

Saya juga menggunakan Tf (sekarang 1.0), dan saya tidak memiliki masalah Error: ValueError: array must not contain infs or NaNs ketika saya mengeksekusi

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)

yang sebelumnya tidak berfungsi.

Mungkin mencoba membuat python 3.5 env baru dan mencoba cuplikan yang disebutkan di atas untuk melihat apakah berfungsi tanpa kesalahan:

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

Hai rasbt,
Ya, saya membuat TSNE berfungsi pada Python 3.5.
Namun, untuk beberapa alasan lain saya lebih baik menggunakan Python 2.7, jadi saya harus terus mengeksplorasi ... semoga berhasil

Terima kasih atas bantuan Anda.

Apakah Anda memiliki distro Miniconda / Anaconda 2.7 lama (er)? Dalam kasus ini, mungkin pertimbangkan untuk menginstal salah satu yang lebih baru, atau perbarui conda root atau python default Anda dan coba lagi (atau buat py 27 env baru dengan mengganti 3.5 dengan 2.7 di conda create -n yourenv python=3.5 numpy scipy scikit-learn )? (tidak yakin apakah ini benar-benar alasannya, tetapi menurut saya LLVM 4.2 (clang-425.0.28) mungkin menjadi masalah; karena kesalahan tampaknya tidak terjadi melalui [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] )

Perbarui: TSNE (perplexity = 30, n_components = 2, init = 'pca', n_iter = 1000, method = 'exact' ) membuatnya berfungsi ...
metode = 'tepat' adalah triknya.

Juga mengalami masalah ini. Menggunakan metode = 'tepat' tampaknya berhasil untuk saya, tetapi sangat lambat. Apakah benar-benar tidak ada solusi lain yang ditemukan orang?

Sudahkah Anda membaca https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264029983 dan https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264087057 ?

Satu-satunya cara saya berhasil mereproduksi masalah ini adalah menginstal numpy dengan pip dan conda di lingkungan conda yang sama. Jika Anda membuat lingkungan conda dari awal, Anda seharusnya tidak mengalami masalah ini.

Jika masalah Anda tampaknya tidak cocok dengan deskripsi ini, kirimkan perintah yang sama persis seperti yang Anda jalankan untuk membuat lingkungan conda Anda, sehingga kami dapat mencoba mereproduksi.

Hai,
Saya membaca komentar di atas dan dapat mereproduksi ini. Saya menjalankan ulang kode dari beberapa minggu yang lalu dan sekarang masalah ini muncul. Berikut contoh minimal yang sekarang mereproduksi masalah ini:

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

Dan hasil dari

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__)

adalah

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

Sekali lagi, mengubah metode menjadi tepat ( TSNE(method='exact') ) menghilangkan kesalahan.

Secara lebih umum, saya telah melihat hasil yang sangat berbeda ketika menggunakan TSNE sklearn (dengan kebingungan yang identik dan parameter lainnya) dari implementasi bh yang diterbitkan oleh Laurens van der Maaten dan versi MATLAB. Saya ingin tahu apakah mungkin ada hubungannya?

Itu memperbaikinya. Maafkan saya - Saya telah secara terpisah menghapus instalasi ulang numpy, scikit learn dan scipy, tetapi tidak seperti di 6665.

Saya memiliki masalah yang sama seperti yang dilaporkan di sini, dan saya tidak menggunakan conda.

Versi Python saya diinstal melalui brew di macOS Sierra 10.12.4

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

Menambahkan mode='exact' memecahkan masalah saya.

@lesteve : Saya mengalami kesalahan ini menggunakan pengaturan yang Anda jelaskan (dua versi numpy diinstal). cukup memperbarui conda install dari numpy ke versi yang sama dengan pip install (1.12.1) telah berhasil bagi saya. saya memang menghapus instalasi pip numpy, karena saya tidak bermaksud memiliki dua versi :)

@lesteve : Terima kasih atas solusinya! Saya kebetulan mendapatkan kesalahan ini dan kemudian saya menemukan diskusi ini. Perbaiki segera setelah menghapus versi duplikat numpy.

Direplikasi Saya telah menghapus pemasangan pip dari numpy dan memperbarui conda.

Darwin-16.7.0-x86_64-i386-64bit
('Python', '2.7.13 | Anaconda custom (x86_64) | (default, 20 Des 2016, 23:05:08) \ n [GCC 4.2.1 Kompatibel dengan Apple LLVM 6.0 (clang-600.0.57)]')
('NumPy', '1.13.1')
('SciPy', '0.19.0')
('Scikit-Learn', '0.18.1')

Tampaknya baik-baik saja di mesin linux saya Linux:
Linux-3.0.101-0.47.71-default-x86_64-dengan-SuSE-11-x86_64
('Python', '2.7.12 | Anaconda 2.3.0 (64-bit) | (default, 2 Juli 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 jadi Anda melakukannya

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

Agak terkait, saya sarankan Anda memperbarui ke scikit-learn 0.19 yang memiliki beberapa perbaikan di t-SNE

mendapatkan kesalahan yang sama sekarang

Hai @rahulsnair , apakah Anda keberatan membuka edisi baru, dengan kode yang dapat direproduksi,

Apakah halaman ini membantu?
0 / 5 - 0 peringkat