






import math

SCREAMING_SNAKE_CASE__		:							Union[str, Any] 				=				10
SCREAMING_SNAKE_CASE__		:							List[Any] 				=				7
SCREAMING_SNAKE_CASE__		:							Optional[Any] 				=				BALLS_PER_COLOUR * NUM_COLOURS





def  _lowerCamelCase						(						__lowerCamelCase = 20       ) ->			str:

     '''simple docstring'''
     UpperCAmelCase__      :  Dict				      =			math.comb(__lowerCamelCase ,							__lowerCamelCase       )
     UpperCAmelCase__      :  List[Any]				      =			math.comb(NUM_BALLS - BALLS_PER_COLOUR ,							__lowerCamelCase       )

     UpperCAmelCase__      :  Tuple				      =			NUM_COLOURS * (1 - missing_colour / total)

     return F"{result:.9f}"


if __name__ == "__main__":
      print(solution(20))











"""simple docstring"""






import argparse

import torch

from transformers import BertForMaskedLM


if __name__ == "__main__":
	__snake_case				:  Optional[Any] =       argparse.ArgumentParser(
	    description=(
	        'Extraction some layers of the full BertForMaskedLM or RObertaForMaskedLM for Transfer Learned'
	        ' Distillation'
	    )
	)
	parser.add_argument('--model_type', default='bert', choices=['bert'])
	parser.add_argument('--model_name', default='bert-base-uncased', type=str)
	parser.add_argument('--dump_checkpoint', default='serialization_dir/tf_bert-base-uncased_0247911.pth', type=str)
	parser.add_argument('--vocab_transform', action='store_true')
	__snake_case				:  List[Any] =       parser.parse_args()

	if args.model_type == "bert":
		__snake_case				:  int =       BertForMaskedLM.from_pretrained(args.model_name)
		__snake_case				:  Tuple =       'bert'
	else:
		raise ValueError('args.model_type should be "bert".')

	__snake_case				:  List[Any] =       model.state_dict()
	__snake_case				:  Any =       {}

	for w in ["word_embeddings", "position_embeddings"]:
		__snake_case				:  List[str] =       state_dict[F"""{prefix}.embeddings.{w}.weight"""]
	for w in ["weight", "bias"]:
		__snake_case				:  Optional[int] =       state_dict[F"""{prefix}.embeddings.LayerNorm.{w}"""]

	__snake_case				:  List[str] =       0
	for teacher_idx in [0, 2, 4, 7, 9, 11]:
		for w in ["weight", "bias"]:
			__snake_case				:  str =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.attention.self.query.{w}"""
			]
			__snake_case				:  Tuple =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.attention.self.key.{w}"""
			]
			__snake_case				:  str =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.attention.self.value.{w}"""
			]

			__snake_case				:  Any =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.attention.output.dense.{w}"""
			]
			__snake_case				:  Union[str, Any] =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.attention.output.LayerNorm.{w}"""
			]

			__snake_case				:  Union[str, Any] =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.intermediate.dense.{w}"""
			]
			__snake_case				:  Any =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.output.dense.{w}"""
			]
			__snake_case				:  Optional[int] =       state_dict[
			    F"""{prefix}.encoder.layer.{teacher_idx}.output.LayerNorm.{w}"""
			]
		std_idx += 1

	__snake_case				:  Union[str, Any] =       state_dict['cls.predictions.decoder.weight']
	__snake_case				:  Union[str, Any] =       state_dict['cls.predictions.bias']
	if args.vocab_transform:
		for w in ["weight", "bias"]:
			__snake_case				:  Union[str, Any] =       state_dict[F"""cls.predictions.transform.dense.{w}"""]
			__snake_case				:  List[str] =       state_dict[F"""cls.predictions.transform.LayerNorm.{w}"""]

	print(F"""N layers selected for distillation: {std_idx}""")
	print(F"""Number of params transferred for distillation: {len(compressed_sd.keys())}""")

	print(F"""Save transferred checkpoint to {args.dump_checkpoint}.""")
	torch.save(compressed_sd, args.dump_checkpoint)