Skip to content

Error When Changing Number of Leaves with Callback function #508

Description

@jturkewitz

I get the following error when running on windows 10 with python and trying to use the callbacks to change the number of leaves:
Traceback (most recent call last):

File "", line 53, in
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])

File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\engine.py", line 180, in train
booster.update(fobj=fobj)

File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\basic.py", line 1355, in update
ctypes.byref(is_finished)))

OSError: exception: access violation writing 0x000002B697046EA8

Here is code to repro the bug:
import lightgbm as lgb
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error

try:
import cPickle as pickle
except:
import pickle

load or create your dataset

print('Load data...')
df_train = pd.read_csv('binary.train', header=None, sep='\t')
df_test = pd.read_csv('binary.test', header=None, sep='\t')

y_train = df_train[0].values
y_test = df_test[0].values
X_train = df_train.drop(0, axis=1).values
X_test = df_test.drop(0, axis=1).values

num_train, num_feature = X_train.shape

create dataset for lightgbm

if you want to re-use data, remember to set free_raw_data=False

lgb_train = lgb.Dataset(X_train, y_train,
free_raw_data=False)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train,
free_raw_data=False)

specify your configurations as a dict

params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': 0
}

feature_name = ['feature_' + str(col) for col in range(num_feature)]
print('Start training...')

feature_name and categorical_feature

gbm = lgb.train(params,
lgb_train,
num_boost_round=10,
valid_sets=lgb_train, # eval training data
feature_name=feature_name,
categorical_feature=[21],
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions