In the conditional variational autoencoders (CVAE) , the VAE mechanism was extended with a tag added to the input of the encoder and decoder. Three tag values corresponding to the LOW, MEDIUM, and HIGH bins of sequence solubility values were used. The learning objective for CVAE can be interpreted as creating different representations of the latent space for each tag but with shared network parameters. Generating a new sequence from the latent embedding space can then be done for a desired tag (e.g. HIGH to maximize solubility), and the CVAE is forced to introduce the patterns observed for the corresponding solubility bin into the generated design.