

from manim import *


class 			_SCREAMING_SNAKE_CASE      (  lowerCAmelCase__):







						def        _snake_case				(			self							)->							Optional[int]:
													lowerCamelCase_								=Rectangle(height=0.5     ,						width=0.5							)
													lowerCamelCase_								=Rectangle(height=0.4_6     ,						width=0.4_6							).set_stroke(width=0							)
													lowerCamelCase_								=Rectangle(height=0.2_5     ,						width=0.2_5							)

													lowerCamelCase_								=[mem.copy() for i in range(6							)]
													lowerCamelCase_								=[mem.copy() for i in range(6							)]
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=VGroup(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=Text("""CPU"""     ,						font_size=24							)
													lowerCamelCase_								=Group(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0.5     ,						aligned_edge=_SCREAMING_SNAKE_CASE							)
													cpu.move_to([-2.5, -0.5, 0]							)
													self.add(_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=[mem.copy() for i in range(4							)]
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=Text("""GPU"""     ,						font_size=24							)
													lowerCamelCase_								=Group(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0.5     ,						aligned_edge=_SCREAMING_SNAKE_CASE							)
													gpu.move_to([-1, -1, 0]							)
													self.add(_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=[mem.copy() for i in range(6							)]
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)

													lowerCamelCase_								=Text("""Model"""     ,						font_size=24							)
													lowerCamelCase_								=Group(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0.5     ,						aligned_edge=_SCREAMING_SNAKE_CASE							)
													model.move_to([3, -1.0, 0]							)
													self.add(_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=[]
													lowerCamelCase_								=[]

													for i, rect in enumerate(_SCREAMING_SNAKE_CASE							):
																				rect.set_stroke(_SCREAMING_SNAKE_CASE							)

																				lowerCamelCase_								=Rectangle(height=0.4_6 / 4     ,						width=0.4_6 / 3							).set_stroke(width=0.0							).set_fill(_SCREAMING_SNAKE_CASE     ,						opacity=0.7							)

																				if i == 0:
																											cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT							)     ,						buff=0.0_2     ,						direction=_SCREAMING_SNAKE_CASE							)
																											cpu_target.set_x(cpu_target.get_x() + 0.1							)
																				elif i == 3:
																											cpu_target.next_to(model_cpu_arr[0]     ,						direction=_SCREAMING_SNAKE_CASE     ,						buff=0.0							)
																				else:
																											cpu_target.next_to(model_cpu_arr[i - 1]     ,						direction=_SCREAMING_SNAKE_CASE     ,						buff=0.0							)
																				self.add(_SCREAMING_SNAKE_CASE							)
																				model_cpu_arr.append(_SCREAMING_SNAKE_CASE							)

													self.add(*_SCREAMING_SNAKE_CASE     ,						*_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=[meta_mem.copy() for i in range(6							)]
													lowerCamelCase_								=[meta_mem.copy() for i in range(6							)]
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=VGroup(*_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=VGroup(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0							)
													lowerCamelCase_								=Text("""Disk"""     ,						font_size=24							)
													lowerCamelCase_								=Group(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							).arrange(_SCREAMING_SNAKE_CASE     ,						buff=0.5     ,						aligned_edge=_SCREAMING_SNAKE_CASE							)
													disk.move_to([-4.0, -1.2_5, 0]							)
													self.add(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=[]

													for i in range(6							):
																				lowerCamelCase_								=fill.copy().set_fill(_SCREAMING_SNAKE_CASE     ,						opacity=0.8							)
																				target.move_to(disk_left_col_base[i]							).scale(0.5							)
																				cpu_disk_arr.append(_SCREAMING_SNAKE_CASE							)

													self.add(*_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=Square(side_length=2.2							)
													key.move_to([-5, 2, 0]							)

													lowerCamelCase_								=MarkupText(
													    f'<b>Key:</b>\n\n<span fgcolor=\'{YELLOW}\'>●</span> Empty Model'     ,						font_size=18     ,						)

													key_text.move_to([-5, 2.4, 0]							)

													self.add(_SCREAMING_SNAKE_CASE     ,						_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=MarkupText(
													    f'<span fgcolor=\'{BLUE}\'>●</span> Checkpoint'     ,						font_size=18     ,						)

													blue_text.next_to(_SCREAMING_SNAKE_CASE     ,						DOWN * 2.4     ,						aligned_edge=key_text.get_left()							)
													self.add(_SCREAMING_SNAKE_CASE							)

													lowerCamelCase_								=MarkupText(f'The offloaded weights are all sent to the CPU.'     ,						font_size=24							)
													step_a.move_to([2, 2, 0]							)

													self.play(Write(_SCREAMING_SNAKE_CASE     ,						run_time=3							)							)

													for i in range(6							):
																				lowerCamelCase_								=cpu_disk_arr[i]
																				lowerCamelCase_								=rect.copy().set_fill(_SCREAMING_SNAKE_CASE     ,						opacity=0.8							).scale(2.0							)
																				cpa.generate_target()
																				cpa.target.move_to(model_base[i]							)

																				if i == 0:
																											rect.set_fill(_SCREAMING_SNAKE_CASE     ,						opacity=0.8							)
																											rect.generate_target()
																											rect.target.move_to(cpu_left_col_base[0]							).scale(2.0							)

																											self.remove(
																											    *_SCREAMING_SNAKE_CASE     ,						*_SCREAMING_SNAKE_CASE     ,						)

																				else:
																											rect.generate_target()
																											rect.target.move_to(cpu_left_col_base[i]							).scale(2.0							)
																				self.play(MoveToTarget(_SCREAMING_SNAKE_CASE							)     ,						MoveToTarget(_SCREAMING_SNAKE_CASE							)     ,						model_base[i].animate.set_stroke(_SCREAMING_SNAKE_CASE							)							)
													self.play(FadeOut(_SCREAMING_SNAKE_CASE							)							)

													lowerCamelCase_								=MarkupText(
													    f'Finally, hooks are added to each weight in the model\nto transfer the weights from CPU to GPU\n\t\tand back when needed.'     ,						font_size=24     ,						)
													step_a.move_to([2, 2, 0]							)

													self.play(Write(_SCREAMING_SNAKE_CASE     ,						run_time=3							)							)

													lowerCamelCase_								=[]
													lowerCamelCase_								=[]
													for i in range(6							):
																				lowerCamelCase_								=Arrow(start=_SCREAMING_SNAKE_CASE     ,						end=_SCREAMING_SNAKE_CASE     ,						color=_SCREAMING_SNAKE_CASE     ,						buff=0.5							)
																				a.next_to(model_base[i].get_left()     ,						_SCREAMING_SNAKE_CASE     ,						buff=0.2							)
																				arrows.append(_SCREAMING_SNAKE_CASE							)
																				animations.append(Write(_SCREAMING_SNAKE_CASE							)							)
													self.play(*_SCREAMING_SNAKE_CASE							)
													self.wait()



from sklearn.neural_network import MLPClassifier

__A	:   Tuple	=					[[0.0, 0.0], [1.0, 1.0], [1.0, 0.0], [0.0, 1.0]]
__A	:   Optional[int]	=					[0, 1, 0, 0]


__A	:   int	=					MLPClassifier(
    solver='lbfgs', alpha=1E-5, hidden_layer_sizes=(5, 2), random_state=1
)

clf.fit(X, y)


__A	:   str	=					[[0.0, 0.0], [0.0, 1.0], [1.0, 1.0]]
__A	:   str	=					clf.predict(test)




def        __UpperCamelCase     (      _A					:							int		)				->Union[str, Any]:



							"""simple docstring"""
							return list(_A		)


if __name__ == "__main__":
	import doctest

	doctest.testmod()
