{"record":{"id":"4280062e0f864d78","repo":"keras-team/keras","slug":"invalid-value-for-argument-depth-multiplier-exp-428006","errorCode":null,"errorMessage":"Invalid value for argument `depth_multiplier`. Expected a strictly positive value. Received depth_multiplier={self.depth_multiplier}.","messagePattern":"Invalid value for argument `depth_multiplier`\\. Expected a strictly positive value\\. Received depth_multiplier=(.+?)\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/convolutional/base_separable_conv.py","lineNumber":135,"sourceCode":"        self.padding = standardize_padding(padding)\n        self.data_format = standardize_data_format(data_format)\n        self.activation = activations.get(activation)\n        self.use_bias = use_bias\n        self.depthwise_initializer = initializers.get(depthwise_initializer)\n        self.pointwise_initializer = initializers.get(pointwise_initializer)\n        self.bias_initializer = initializers.get(bias_initializer)\n        self.depthwise_regularizer = regularizers.get(depthwise_regularizer)\n        self.pointwise_regularizer = regularizers.get(pointwise_regularizer)\n        self.bias_regularizer = regularizers.get(bias_regularizer)\n        self.depthwise_constraint = constraints.get(depthwise_constraint)\n        self.pointwise_constraint = constraints.get(pointwise_constraint)\n        self.bias_constraint = constraints.get(bias_constraint)\n        self.data_format = self.data_format\n\n        self.input_spec = InputSpec(min_ndim=self.rank + 2)\n\n        if self.depth_multiplier is not None and self.depth_multiplier <= 0:\n            raise ValueError(\n                \"Invalid value for argument `depth_multiplier`. Expected a \"\n                \"strictly positive value. Received \"\n                f\"depth_multiplier={self.depth_multiplier}.\"\n            )\n\n        if self.filters is not None and self.filters <= 0:\n            raise ValueError(\n                \"Invalid value for argument `filters`. Expected a strictly \"\n                f\"positive value. Received filters={self.filters}.\"\n            )\n\n        if not all(self.kernel_size):\n            raise ValueError(\n                \"The argument `kernel_size` cannot contain 0. Received: \"\n                f\"kernel_size={self.kernel_size}.\"\n            )\n\n        if not all(self.strides):","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/convolutional/base_separable_conv.py#L117-L153","documentation":"Separable convolution layers (SeparableConv1D/2D) require depth_multiplier to be strictly positive; the depthwise stage needs at least one output channel per input channel, so __init__ rejects <=0 values.","triggerScenarios":"Passing depth_multiplier=0 or negative to keras.layers.SeparableConv1D or SeparableConv2D, including values from config dicts or hyperparameter tuning.","commonSituations":"Config-driven model builders where depth_multiplier is computed and underflows to 0; defaults dropped when loading JSON/YAML configs.","solutions":["Use a positive integer for depth_multiplier (1 is the common default).","Validate the config value before constructing: assert isinstance(dm, int) and dm > 0.","Trace where the 0/negative value originates (sweep bounds, env var parsing)."],"exampleFix":"# before\nkeras.layers.SeparableConv2D(32, 3, depth_multiplier=0)\n\n# after\nkeras.layers.SeparableConv2D(32, 3, depth_multiplier=1)","handlingStrategy":"validation","validationCode":"assert depth_multiplier is None or (isinstance(depth_multiplier, int) and depth_multiplier > 0)","typeGuard":"def valid_depth_multiplier(dm) -> bool:\n    return dm is None or (isinstance(dm, int) and dm > 0)","tryCatchPattern":null,"preventionTips":["Sanitize config-sourced hyperparameters","Use max(1, int(dm)) for computed values"],"tags":["keras","separable-conv","invalid-arguments","validation"],"backgroundTag":"invalid-layer-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}