good first issue
Description
We should not use assert to address bad user input, but there are such uses of assert in the GPy codebase. Instead, we should use ValueError. For more details, see https://github.com/SheffieldML/GPy/pull/917#discussion_r639520080