RaviSoji / plda

Probabilistic Linear Discriminant Analysis & classification, written in Python.
https://ravisoji.com
Apache License 2.0
128 stars 31 forks source link

ValueError: array must not contain infs or NaNs #49

Closed MuruganR96 closed 5 years ago

MuruganR96 commented 5 years ago

i was applied plda for my speaker verification task.

import os
import plda
import numpy as np

x_vector_embeddings = np.load("../../spk_xvector.npz")
train_values = x_vector_embeddings['features']
train_labels = x_vector_embeddings['data_path']
for i,label in enumerate(train_labels):
    labels.append(label.get('pic_path'))
myarray = np.asarray(labels)

training_data = train_values
training_labels = myarray

testing_data = train_values[:2]
testing_labels = myarray[:2]

classifier = plda.Classifier()
classifier.fit_model(training_data, training_labels, n_principal_components=5)
predictions, log_p_predictions = classifier.predict(testing_data)

it's giving this issue. ValueError: array must not contain infs or NaNs

/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/optimizer.py:165: RuntimeWarning: Degrees of freedom <= 0 for slice cov_ks.append(np.cov(X_k.T)) /home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/env/lib/python3.5/site-packages/numpy/lib/function_base.py:3109: RuntimeWarning: divide by zero encountered in double_scalars c = 1. / np.float64(fact) /home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/env/lib/python3.5/site-packages/numpy/lib/function_base.py:3109: RuntimeWarning: invalid value encountered in multiply c = 1. / np.float64(fact) Traceback (most recent call last): File "x_vector_training.py", line 29, in classifier.fit_model(training_data, training_labels, n_principal_components=5) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/classifier.py", line 25, in fit_model self.model = Model(X, Y, n_principal_components) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/model.py", line 94, in init self.fit(row_wise_data, labels, n_principal_components) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/model.py", line 161, in fit optimize_maximum_likelihood(X, labels) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/optimizer.py", line 68, in optimize_maximum_likelihood W = calc_W(S_b, S_w) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/plda/optimizer.py", line 181, in calc_W eigenvalues, eigenvectors = eigh(S_b, S_w) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/env/lib/python3.5/site-packages/scipy/linalg/decomp.py", line 338, in eigh b1 = _asarray_validated(b, check_finite=check_finite) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/env/lib/python3.5/site-packages/scipy/_lib/_util.py", line 238, in _asarray_validated a = toarray(a) File "/home/dell/Murugan_R/13-12-2018/kaldi/egs/sre16/v2/data/feat/xvectors_enroll_mfcc/plda/env/lib/python3.5/site-packages/numpy/lib/function_base.py", line 1233, in asarray_chkfinite "array must not contain infs or NaNs") ValueError: array must not contain infs or NaNs

@RaviSoji sir. how to reslove this issue.

RaviSoji commented 5 years ago

Were you able to figure this out?

Would you mind letting me know how many observations you fit on versus how many categories there are in the training set? len(labels) and np.unique(labels).shape[0]should give these numbers.

It would also be helpful if

  1. you can confirm that there are no Infs or Nans in your training and test sets, and
  2. can report training_data.shape, testing_data.shape, training_labels.shape, and testing_labels.shape.
RaviSoji commented 5 years ago

Closing because I am assuming you've figured this out.