mirror of
				https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
				synced 2025-11-04 12:03:36 +00:00 
			
		
		
		
	Added ability to ignore last n layers in FrozenCLIPEmbedder
This commit is contained in:
		
							parent
							
								
									b458fa48fe
								
							
						
					
					
						commit
						1371d7608b
					
				@ -281,8 +281,15 @@ class FrozenCLIPEmbedderWithCustomWords(torch.nn.Module):
 | 
			
		||||
 | 
			
		||||
        remade_batch_tokens_of_same_length = [x + [self.wrapped.tokenizer.eos_token_id] * (target_token_count - len(x)) for x in remade_batch_tokens]
 | 
			
		||||
        tokens = torch.asarray(remade_batch_tokens_of_same_length).to(device)
 | 
			
		||||
 | 
			
		||||
        tmp = -opts.CLIP_ignore_last_layers
 | 
			
		||||
        if (opts.CLIP_ignore_last_layers == 0):
 | 
			
		||||
            outputs = self.wrapped.transformer(input_ids=tokens, position_ids=position_ids)
 | 
			
		||||
            z = outputs.last_hidden_state
 | 
			
		||||
        else:
 | 
			
		||||
            outputs = self.wrapped.transformer(input_ids=tokens, position_ids=position_ids, output_hidden_states=tmp)
 | 
			
		||||
            z = outputs.hidden_states[tmp]
 | 
			
		||||
            z = self.wrapped.transformer.text_model.final_layer_norm(z)
 | 
			
		||||
 | 
			
		||||
        # restoring original mean is likely not correct, but it seems to work well to prevent artifacts that happen otherwise
 | 
			
		||||
        batch_multipliers_of_same_length = [x + [1.0] * (target_token_count - len(x)) for x in batch_multipliers]
 | 
			
		||||
 | 
			
		||||
@ -225,6 +225,7 @@ options_templates.update(options_section(('sd', "Stable Diffusion"), {
 | 
			
		||||
    "use_old_emphasis_implementation": OptionInfo(False, "Use old emphasis implementation. Can be useful to reproduce old seeds."),
 | 
			
		||||
    "enable_batch_seeds": OptionInfo(True, "Make K-diffusion samplers produce same images in a batch as when making a single image"),
 | 
			
		||||
    "filter_nsfw": OptionInfo(False, "Filter NSFW content"),
 | 
			
		||||
    'CLIP_ignore_last_layers': OptionInfo(0, "Ignore last layers of CLIP model", gr.Slider, {"minimum": 0, "maximum": 5, "step": 1}),
 | 
			
		||||
    "random_artist_categories": OptionInfo([], "Allowed categories for random artists selection when using the Roll button", gr.CheckboxGroup, {"choices": artist_db.categories()}),
 | 
			
		||||
}))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user