Skip to content

[R-package] init_model in lgb.cv has error #6873

@EthanKang-Accelerant

Description

@EthanKang-Accelerant

Description

When using init_model inside lgb.cv, an error will occur:

Error in dataset$get_field(field_name = field_name) : Cannot perform Dataset$get_field() before constructing Dataset.

Reproducible example

df_temp <- data.matrix(mtcars[, c('cyl', 'disp', 'hp')])
label_temp <- mtcars$mpg
dtrain <- lgb.Dataset(data = df_temp, label = label_temp, free_raw_data = FALSE)
dtrain$construct()

# Train the init model first using the same constructed dataset
params <- list(
  learning_rate = 0.05,
  num_leaves = 4,
  max_depth = 2,
  verbose = -1
)

init_model <- lgb.train(
  params = params,
  data = dtrain,
  nrounds = 100
)

# Force construction again just to be sure (sometimes the pointer gets stale)
dtrain$construct()

# Now run lgb.cv
cv_result <- lgb.cv(
  params = params,
  data = dtrain,
  init_model = init_model,
  nrounds = 50,
  nfold = 5
)

Environment info

LightGBM version or commit hash:

Command(s) you used to install LightGBM

Additional Comments

Adding init_model in lgb.train works as intended.

df_temp <- data.matrix(mtcars[, c('cyl', 'disp', 'hp')])
label_temp <- mtcars$mpg
dtrain <- lgb.Dataset(data = df_temp, label = label_temp, free_raw_data = FALSE)
dtrain$construct()

# Train the init model first using the same constructed dataset
params <- list(
  learning_rate = 0.05,
  num_leaves = 4,
  max_depth = 2,
  verbose = -1
)

init_model <- lgb.train(
  params = params,
  data = dtrain,
  nrounds = 100
)

# Force construction again just to be sure (sometimes the pointer gets stale)
dtrain$construct()

# Now run lgb.cv
cv_result <- lgb.train(
  params = params,
  data = dtrain,
  init_model = init_model,
  nrounds = 50
)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions