Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: 'NoneType' object has no attribute 'make_ptr_double' #860

Open
monk1337 opened this issue Sep 2, 2020 · 4 comments
Open

Comments

@monk1337
Copy link

monk1337 commented Sep 2, 2020

I am working with h2o4gpu and trying to run the example provided on github.

import h2o4gpu
import sklearn
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.metrics import accuracy_score
import numpy as np


def test_not_labels():
    data = load_breast_cancer()
    X = data.data
    y = data.target

    # convert class values to [0,2]
    # y = y * 2

    # Splitting data into train and test
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=0.25, random_state=42)

    # sklearn
    clf_sklearn = linear_model.LogisticRegression()
    clf_sklearn.fit(X_train, y_train)
    y_pred_sklearn = clf_sklearn.predict(X_test)

    # h2o
    clf_h2o = h2o4gpu.LogisticRegression()
    clf_h2o.fit(X_train, y_train)
    y_pred_h2o = clf_h2o.predict(X_test)

    assert np.allclose(accuracy_score(y_test, y_pred_sklearn), accuracy_score(y_test, y_pred_h2o.squeeze()))

But it's giving me this error :

AttributeError                            Traceback (most recent call last)
<ipython-input-5-57ba0443136b> in <module>
----> 1 test_not_labels()

<ipython-input-4-2f003f7e0081> in test_not_labels()
     27     # h2o
     28     clf_h2o = h2o4gpu.LogisticRegression()
---> 29     clf_h2o.fit(X_train, y_train)
     30     y_pred_h2o = clf_h2o.predict(X_test)
     31 

~/h20/lib/python3.7/site-packages/h2o4gpu/solvers/logistic.py in fit(self, X, y, sample_weight)
    273 
    274     def fit(self, X, y=None, sample_weight=None):
--> 275         res = self.model.fit(X, y, sample_weight)
    276         self.set_attributes()
    277         return res

~/h20/lib/python3.7/site-packages/h2o4gpu/solvers/elastic_net.py in fit(self, train_x, train_y, valid_x, valid_y, sample_weight, free_input_data)
    301                 valid_y=valid_y,
    302                 sample_weight=sample_weight,
--> 303                 source_dev=source_dev)
    304 
    305         else:

~/h20/lib/python3.7/site-packages/h2o4gpu/solvers/utils.py in prepare_and_upload_data(self, train_x, train_y, valid_x, valid_y, sample_weight, source_dev)
    272     time_upload_data0 = time.time()
    273     (a, b, c, d, e) = upload_data(self, train_x_np, train_y_np, valid_x_np,
--> 274                                   valid_y_np, weight_np, source_dev)
    275 
    276     self.time_upload_data = time.time() - time_upload_data0

~/h20/lib/python3.7/site-packages/h2o4gpu/solvers/utils.py in upload_data(self, train_x, train_y, valid_x, valid_y, sample_weight, source_dev)
    376 
    377     if self.double_precision == 1:
--> 378         c_upload_data = self.lib.make_ptr_double
    379     elif self.double_precision == 0:
    380         c_upload_data = self.lib.make_ptr_float

AttributeError: 'NoneType' object has no attribute 'make_ptr_double'

I have installed h20 and h2o4gpu in separate python env with python 3.7 with cuda 10.1
How I can resolve this?

@monk1337
Copy link
Author

monk1337 commented Sep 2, 2020

I had to set solver = 'lbfgs' in clf_sklearn = linear_model.LogisticRegression()

@monk1337 monk1337 closed this as completed Sep 2, 2020
@monk1337 monk1337 reopened this Sep 2, 2020
@monk1337
Copy link
Author

monk1337 commented Sep 2, 2020

I checked with get_gpu_info_c it's not detecting gpu, So while setting solver = 'lbfgs' it's selecting backend='sklearn' but when I am setting backend='h2o4gpu', I am getting same error :

AttributeError: 'NoneType' object has no attribute 'make_ptr_float'

@trebesh
Copy link

trebesh commented Jan 5, 2021

I am having the same issue but at line 380 in OP error message with the Lasso example on github giving:

Getting data
Reading Data with Pandas
(999, 9733)
Original m=999 n=9732
Size of Train rows=800 & valid rows=199
Size of Train cols=9732 valid cols=9732
Size of Train cols=9733 & valid cols=9733 after adding intercept column
Creating model
Training model
Traceback (most recent call last):
File "gpu_elastic_net_h2o.py", line 55, in
model.fit(train_x, train_y)
File "../h2o4gpu/solvers/elastic_net.py", line 302, in fit
source_dev=source_dev)
File "../h2o4gpu/solvers/utils.py", line 274, in prepare_and_upload_data
valid_y_np, weight_np, source_dev)
File "../h2o4gpu/solvers/utils.py", line 380, in upload_data
c_upload_data = self.lib.make_ptr_float
AttributeError: 'NoneType' object has no attribute 'make_ptr_float'

@GeorgePearse
Copy link

GeorgePearse commented Nov 4, 2021

Hitting the same problem. Anyone had any luck with this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants