Davout 0.1.1.dev168__tar.gz → 0.1.1.dev169__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {davout-0.1.1.dev168/source/Davout.egg-info → davout-0.1.1.dev169}/PKG-INFO +3 -3
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/README.md +2 -2
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/pyproject.toml +1 -1
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/neural_network_trainer.py +1 -1
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/training_tools.py +343 -47
- davout-0.1.1.dev169/source/Davout/PythonicUtilities/function_tools.py +174 -0
- davout-0.1.1.dev169/source/Davout/PythonicUtilities/user_interaction_tools.py +296 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169/source/Davout.egg-info}/PKG-INFO +3 -3
- davout-0.1.1.dev168/source/Davout/PythonicUtilities/function_tools.py +0 -91
- davout-0.1.1.dev168/source/Davout/PythonicUtilities/user_interaction_tools.py +0 -120
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/LICENSE +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/setup.cfg +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/setup.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_artery.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_matrix_with_fiber.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/elastin_fiber_creator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_artery_transfinite.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_matrix_with_fiber_transfinite.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/elastin_fiber_creator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/spherical_RVE.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale_ellipsoid.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/beam_micropolar_case_1.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/artery_parameters.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/fiber_matrix_parameters.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/periodic_structure.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/solids/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/solids/intervertebral_disc.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/aa_tests/solids/whole_ensemble_of_geometries.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/cuboid_cylinders.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/cuboid_ellipsoids.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/cuboid_generator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/cuboid_helicoids.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/solids/cuboid_prisms.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/geometric_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/mesh_data_retriever.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/meshing_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/region_finder.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/CuboidGmsh/tool_box/verification_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/PINNs/Physics/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/PINNs/Physics/elasticity_equation.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/PINNs/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_imposed_displacement_gradient.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/dataset_generator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/input_data_filler.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/kinematics_surrogate_model.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/SVD_framework/young_modulus_field_generator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/heat_equation.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_imposed_displacement_gradient.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/dataset_generator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/input_data_filler.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/young_modulus_field_generator.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_optimization.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_based_NNs.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_convex_and_partially_convex_input_NNs.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_math_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_quotient_space_NNs.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_tensor_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/custom_architectures/SVD_quotient_space.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/custom_architectures/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/custom_architectures/convexity_concerned_NNs.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/custom_architectures/gated_quotient_space.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/custom_architectures/generic_feed_forward.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/ANN_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/SVD_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/activation_function_utilities.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/custom_activation_functions.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/differentiation_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/loss_assembler_classes.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/loss_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/math_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/numerical_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/parameters_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/tensor_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/REPL_experiments.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/optimization/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/optimization/tests_optimization_methods.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/tests_batching.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/tests_finite_elements.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/tests_loss_function.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/tests_physics.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/unidimensional/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/unidimensional/bar_fea.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/unidimensional/hyperelastic_1D_energies.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/aa_tests/unidimensional/variational_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/assembly/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/assembly/body_forces_work.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/assembly/dirichlet_boundary_conditions_enforcer.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/assembly/hyperelastic_internal_work.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/assembly/surface_forces_work.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/constitutive_models/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/constitutive_models/hyperelastic_isotropic_models.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/elements_manager.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/finite_element_dispatcher.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/surface_elements/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/surface_elements/triangles.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/volume_elements/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/finite_elements/volume_elements/tetrahedrons.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/optimization/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/optimization/conditioning_matrices.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/optimization/loss_functions.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/optimization/neural_network_assembler.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/optimization/objective_function.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/physics/compressible_cauchy_hyperelasticy.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/constitutive_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/dirichlet_loading_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/math_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/mesh_info_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/mesh_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/neumann_loading_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/node_ordering.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/optimization_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/parametric_curves_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/sensitivity_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/FENN/tool_box/tensorflow_utilities.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/cauchy_tetrahedron.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/continuum_mechanics_potato_collage.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/fake_book_spines.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/null_space_architecture.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/strain_tensors.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/tests_collage_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/tests_delaunay.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/tests_paraview_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/aa_tests/tests_plotting_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/collage_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/paraview_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/plotting_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/arrows_lines_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/box_and_markers_classes.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/box_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/collage_classes.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/curves_setter.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/image_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/interactivity_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/paraview_scripts.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/perspective_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/GraphUtilities/tool_box/text_excerpt_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/LaTeXUtilities.sty +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/aa_tests/latex_parser_tests.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/latex_parser.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/tool_box/command_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/tool_box/parsing_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/LaTeXUtilities/tool_box/sty_file_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/heat_transfer/heat_box.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/beam_with_fibers.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_HGO.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean_incompressible.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/hyperelastic_box.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/incompressible_hyperelastic_box.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/cylindrical_coordinates_material_property.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/disc_HGO.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/local_coordinate_system_generation.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_hyperelastic_box.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_incompressible_box.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/read_dofs_in_volume.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/young_modulus_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/deformation_laboratory/microscale_deformation_lab.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/disc_micropolar_neo_hookean.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin_old.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Suh_et_al/suh_implementation.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization_original.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_homogenization.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_io.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/stress_plots.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation_second_elasticity_tensor.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/tangent_operator_plotter.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/curve_fitting.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_material_property.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/elasticity_tensor.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/incompressible.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/linear_expression_test.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/petsc_2D.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic_class.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_shifted_field.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/teste_afim.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/working_example_dictionaries.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/multiscale/hyperelasticity/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/compressible_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/incompressible_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes/beam_gmsh.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes_paths.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/aa_tests_and_examples/various_physics_tests.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/heat_transfer/isotropic_heat_conduction.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/hyperelasticity/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/hyperelasticity/anisotropic_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/hyperelasticity/isotropic_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/constitutive_models/hyperelasticity/micropolar_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_classes.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_expressions.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/multiscale_hyperelasticity.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/multiscale/multiscale_micropolar.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/physics/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/physics/hyperelastic_cauchy_continuum.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/physics/hyperelastic_incompressible_cauchy_continuum.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/physics/hyperelastic_micropolar_continuum.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/physics/steady_state_heat_transfer.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/post_processes/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/post_processes/post_processes_classes.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/post_processes/post_processes_functions.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/binary_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/body_forces_loading_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/boundary_conditions_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/constitutive_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/dirichlet_load_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/expressions_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/functional_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/homogenization_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/mesh_handling_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/multiscale_boundary_conditions_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/numerical_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/parallelization_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/post_processing_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/pseudotime_stepping_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/read_write_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/surface_loading_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/tensor_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/variational_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/MultiMech/tool_box/weak_boundary_conditions_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/aa_tests/tests_template.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/aa_tests/txt_tests.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/coordinate_systems_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/dictionary_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/file_handling_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/fonts/CMU_Serif_Roman.ttf +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/interpolation_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/math_experiments.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/numpy_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/package_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/path_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/programming_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/recursion_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/string_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/tensor_and_math_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/PythonicUtilities/testing_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/aa_tests/test_delaunay_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/domain_decomposition/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/tool_box/delaunay_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/tool_box/sampling_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/StochasticUtilities/tool_box/statistics_tools.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/__init__.py +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout.egg-info/SOURCES.txt +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout.egg-info/dependency_links.txt +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout.egg-info/requires.txt +0 -0
- {davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Davout
|
|
3
|
-
Version: 0.1.1.
|
|
3
|
+
Version: 0.1.1.dev169
|
|
4
4
|
Summary: Scientific computing utilities combining FEM, ANN and tooling
|
|
5
5
|
Author: Matheus Janczkowski
|
|
6
6
|
Author-email: Matheus Janczkowski <matheusj2009@hotmail.com>
|
|
@@ -23,11 +23,11 @@ to the repository and source files: https://github.com/Matheus-Janczkowski/Davou
|
|
|
23
23
|
|
|
24
24
|
1. Link to the booklet on installation of a miscelaneous of software: https://www.overleaf.com/read/wbxhncmtnmkm#0eb73b
|
|
25
25
|
|
|
26
|
-
2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/
|
|
26
|
+
2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_python_programming
|
|
27
27
|
|
|
28
28
|
3. Link to the booklet on writing using LaTeX: https://www.overleaf.com/read/sdrvfrpdjhft#66d6f9
|
|
29
29
|
|
|
30
|
-
4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/
|
|
30
|
+
4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_continuum_mechanics
|
|
31
31
|
|
|
32
32
|
4. Link for the presentation template: https://www.overleaf.com/read/sbgxdphxswmm#6d7d64
|
|
33
33
|
|
|
@@ -4,11 +4,11 @@ to the repository and source files: https://github.com/Matheus-Janczkowski/Davou
|
|
|
4
4
|
|
|
5
5
|
1. Link to the booklet on installation of a miscelaneous of software: https://www.overleaf.com/read/wbxhncmtnmkm#0eb73b
|
|
6
6
|
|
|
7
|
-
2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/
|
|
7
|
+
2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_python_programming
|
|
8
8
|
|
|
9
9
|
3. Link to the booklet on writing using LaTeX: https://www.overleaf.com/read/sdrvfrpdjhft#66d6f9
|
|
10
10
|
|
|
11
|
-
4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/
|
|
11
|
+
4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_continuum_mechanics
|
|
12
12
|
|
|
13
13
|
4. Link for the presentation template: https://www.overleaf.com/read/sbgxdphxswmm#6d7d64
|
|
14
14
|
|
{davout-0.1.1.dev168 → davout-0.1.1.dev169}/source/Davout/DeepMech/tool_box/training_tools.py
RENAMED
|
@@ -4,6 +4,8 @@ import tensorflow as tf
|
|
|
4
4
|
|
|
5
5
|
import sys
|
|
6
6
|
|
|
7
|
+
import inspect
|
|
8
|
+
|
|
7
9
|
import numpy as np
|
|
8
10
|
|
|
9
11
|
from tqdm import tqdm
|
|
@@ -14,7 +16,7 @@ import time
|
|
|
14
16
|
|
|
15
17
|
from copy import deepcopy
|
|
16
18
|
|
|
17
|
-
from scipy.optimize import minimize
|
|
19
|
+
from scipy.optimize import minimize, _minimize
|
|
18
20
|
|
|
19
21
|
from scipy import stats
|
|
20
22
|
|
|
@@ -26,6 +28,10 @@ from ...PythonicUtilities import path_tools
|
|
|
26
28
|
|
|
27
29
|
from ...PythonicUtilities import string_tools
|
|
28
30
|
|
|
31
|
+
from ...PythonicUtilities.function_tools import verify_dictionary_as_function_argument
|
|
32
|
+
|
|
33
|
+
from ...PythonicUtilities.user_interaction_tools import PrintForLoopInfo
|
|
34
|
+
|
|
29
35
|
# Defines a class to optimize the model's parameters
|
|
30
36
|
|
|
31
37
|
class ModelTraining:
|
|
@@ -33,8 +39,8 @@ class ModelTraining:
|
|
|
33
39
|
def __init__(self, model, training_inputArray, training_trueArray,
|
|
34
40
|
loss_metric=tf.keras.losses.MeanAbsoluteError(), optimizer=
|
|
35
41
|
tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9, nesterov=
|
|
36
|
-
True), n_iterations=1000, gradient_tolerance=1E-3,
|
|
37
|
-
|
|
42
|
+
True), n_iterations=1000, gradient_tolerance=1E-3, float_type=
|
|
43
|
+
tf.float32, verbose_deltaIterations=100, verbose=False,
|
|
38
44
|
save_model_file="trained_model.keras", parent_path="get current pa"+
|
|
39
45
|
"th"):
|
|
40
46
|
|
|
@@ -99,7 +105,6 @@ class ModelTraining:
|
|
|
99
105
|
# tor to create a map for compilation, hence, speeding it up
|
|
100
106
|
|
|
101
107
|
@tf.function
|
|
102
|
-
|
|
103
108
|
def train_step(self):
|
|
104
109
|
|
|
105
110
|
with tf.GradientTape() as tape:
|
|
@@ -111,7 +116,7 @@ class ModelTraining:
|
|
|
111
116
|
self.optimizer.apply_gradients(zip(gradients,
|
|
112
117
|
self.model.trainable_variables))
|
|
113
118
|
|
|
114
|
-
return loss,
|
|
119
|
+
return loss, gradients
|
|
115
120
|
|
|
116
121
|
# Defines a method for the optimization loop. But names it call so
|
|
117
122
|
# that it is called as soon as the class is created
|
|
@@ -130,7 +135,11 @@ class ModelTraining:
|
|
|
130
135
|
|
|
131
136
|
for i in range(self.n_iterations):
|
|
132
137
|
|
|
133
|
-
loss_value,
|
|
138
|
+
loss_value, gradient_vector = self.train_step()
|
|
139
|
+
|
|
140
|
+
# Evaluates the gradient's norm
|
|
141
|
+
|
|
142
|
+
gradient_norm = tf.linalg.global_norm(gradient_vector)
|
|
134
143
|
|
|
135
144
|
if gradient_norm.numpy()<=self.gradient_tolerance:
|
|
136
145
|
|
|
@@ -148,13 +157,18 @@ class ModelTraining:
|
|
|
148
157
|
|
|
149
158
|
if i%self.verbose_deltaIterations==0:
|
|
150
159
|
|
|
160
|
+
gradient_maximum_component = tf.reduce_max(tf.abs(
|
|
161
|
+
gradient_vector)).numpy()
|
|
162
|
+
|
|
151
163
|
print("Iteration "+integer_toString(i, max_digits)+
|
|
152
164
|
": loss="+format(loss_value.numpy(), '.5e')+", gra"+
|
|
153
165
|
"dient norm: "+format(gradient_norm.numpy(), '.5e')+
|
|
154
166
|
", gradient norm divided by the square root of the"+
|
|
155
167
|
" number of trainable parameters: "+format(
|
|
156
168
|
gradient_norm.numpy()/
|
|
157
|
-
self.number_trainable_parameters, '.5e')
|
|
169
|
+
self.number_trainable_parameters, '.5e')+"\nThe ma"+
|
|
170
|
+
"ximum component of the gradient in absolute value"+
|
|
171
|
+
" is: "+format(gradient_maximum_component, '.5e'))
|
|
158
172
|
|
|
159
173
|
# Evaluates the elapsed time
|
|
160
174
|
|
|
@@ -303,14 +317,6 @@ class ModelCustomTraining:
|
|
|
303
317
|
self.training_trueValues = tf.constant(training_trueArray, dtype
|
|
304
318
|
=self.float_type)
|
|
305
319
|
|
|
306
|
-
# Construct a class to give the loss function, its gradient, and
|
|
307
|
-
# the instructions for parameters (weights and biases) flattening
|
|
308
|
-
# and reconstruction
|
|
309
|
-
|
|
310
|
-
self.loss_class, self.model_parameters = loss_tools.build_loss_gradient_varying_model_parameters(
|
|
311
|
-
self.model, self.loss_metric, self.training_input,
|
|
312
|
-
model_true_values=self.training_trueValues, verbose=verbose)
|
|
313
|
-
|
|
314
320
|
# Gets the number of output neurons. Tries to get first via a
|
|
315
321
|
# custom attribute
|
|
316
322
|
|
|
@@ -322,6 +328,190 @@ class ModelCustomTraining:
|
|
|
322
328
|
|
|
323
329
|
self.n_outputs = self.model.trainable_variables[-1].shape[0]
|
|
324
330
|
|
|
331
|
+
# Verifies if the optimizer is a dictionary
|
|
332
|
+
|
|
333
|
+
optimizer_name = None
|
|
334
|
+
|
|
335
|
+
optimizer_additional_info = {}
|
|
336
|
+
|
|
337
|
+
if isinstance(self.optimizer, dict):
|
|
338
|
+
|
|
339
|
+
# Verifies if there is a key for the optimizer's name
|
|
340
|
+
|
|
341
|
+
if "name" in self.optimizer:
|
|
342
|
+
|
|
343
|
+
# Gets the name
|
|
344
|
+
|
|
345
|
+
optimizer_name = self.optimizer["name"]
|
|
346
|
+
|
|
347
|
+
# Otherwise, throws an error
|
|
348
|
+
|
|
349
|
+
else:
|
|
350
|
+
|
|
351
|
+
raise KeyError("There is no key 'name' in the dictiona"+
|
|
352
|
+
"ry 'optimizer' in 'ModelCustomTraining'. The name mus"+
|
|
353
|
+
"t be provided to tell the optimization method")
|
|
354
|
+
|
|
355
|
+
# Copies all additional information
|
|
356
|
+
|
|
357
|
+
for key, value in self.optimizer.items():
|
|
358
|
+
|
|
359
|
+
# Excludes the key 'name'
|
|
360
|
+
|
|
361
|
+
if key!="name":
|
|
362
|
+
|
|
363
|
+
optimizer_additional_info[key] = value
|
|
364
|
+
|
|
365
|
+
# Verifies if the optimizer variable is a string
|
|
366
|
+
|
|
367
|
+
elif isinstance(self.optimizer, str):
|
|
368
|
+
|
|
369
|
+
# Copies the optimizer name
|
|
370
|
+
|
|
371
|
+
optimizer_name = str(self.optimizer)
|
|
372
|
+
|
|
373
|
+
# If an optimizer name was recovered, tracks if it is an optimi-
|
|
374
|
+
# zer native to Keras or native to scipy
|
|
375
|
+
|
|
376
|
+
if optimizer_name is not None:
|
|
377
|
+
|
|
378
|
+
# Verifies if it is from Keras
|
|
379
|
+
|
|
380
|
+
if hasattr(tf.keras.optimizers, optimizer_name):
|
|
381
|
+
|
|
382
|
+
# Sets the optimizer from Keras as an instance of the
|
|
383
|
+
# corresponding class
|
|
384
|
+
|
|
385
|
+
optimizer_class = getattr(tf.keras.optimizers,
|
|
386
|
+
optimizer_name)
|
|
387
|
+
|
|
388
|
+
# Verifies if the user-given parameters of the optimizer
|
|
389
|
+
# are consistent
|
|
390
|
+
|
|
391
|
+
verify_dictionary_as_function_argument(
|
|
392
|
+
optimizer_class.__init__, optimizer_additional_info)
|
|
393
|
+
|
|
394
|
+
# Sets the hyperparameters
|
|
395
|
+
|
|
396
|
+
self.optimizer = optimizer_class(
|
|
397
|
+
**optimizer_additional_info)
|
|
398
|
+
|
|
399
|
+
# Sets the training method as the wrapper for automatic
|
|
400
|
+
# differentiation and the keras optimizer
|
|
401
|
+
|
|
402
|
+
self.set_training = self.set_keras_training
|
|
403
|
+
|
|
404
|
+
# Sets the loss function as the one appropriate for Ke-
|
|
405
|
+
# ras optimizers
|
|
406
|
+
|
|
407
|
+
self.loss_function = self.loss_function_keras
|
|
408
|
+
|
|
409
|
+
# Sets the flag that tells if a scipy optimizer will be
|
|
410
|
+
# used to False
|
|
411
|
+
|
|
412
|
+
self.use_scipy_optimizer = False
|
|
413
|
+
|
|
414
|
+
# Verifies if it is a scipy method
|
|
415
|
+
|
|
416
|
+
else:
|
|
417
|
+
|
|
418
|
+
# Gets the optimization methods available at scipy
|
|
419
|
+
|
|
420
|
+
available_scipy_optimizers = getattr(_minimize,'MINIMI'+
|
|
421
|
+
'ZE_METHODS',{})
|
|
422
|
+
|
|
423
|
+
# Verifies if the given optimizer name is in the list of
|
|
424
|
+
# available methods
|
|
425
|
+
|
|
426
|
+
if not (optimizer_name.lower() in (
|
|
427
|
+
available_scipy_optimizers)):
|
|
428
|
+
|
|
429
|
+
# Gets the available methods in Keras
|
|
430
|
+
|
|
431
|
+
native_keras_optimizers = ""
|
|
432
|
+
|
|
433
|
+
for name, optimizer_object in inspect.getmembers(
|
|
434
|
+
tf.keras.optimizers):
|
|
435
|
+
|
|
436
|
+
if inspect.isclass(optimizer_object) and (
|
|
437
|
+
issubclass(optimizer_object,
|
|
438
|
+
tf.keras.optimizers.Optimizer)):
|
|
439
|
+
|
|
440
|
+
native_keras_optimizers += ("\n'"+str(name)+
|
|
441
|
+
"'")
|
|
442
|
+
|
|
443
|
+
# Gets the available methods in scipy
|
|
444
|
+
|
|
445
|
+
native_scipy_methods = ""
|
|
446
|
+
|
|
447
|
+
for name in available_scipy_optimizers:
|
|
448
|
+
|
|
449
|
+
native_scipy_methods += "\n'"+str(name)+"'"
|
|
450
|
+
|
|
451
|
+
raise NameError("'"+str(optimizer_name)+"' was not"+
|
|
452
|
+
" found in the native Keras' optimizers nor in the"+
|
|
453
|
+
" available optimizers at scipy. Check the availab"+
|
|
454
|
+
"le methods in Keras:\n"+native_keras_optimizers+
|
|
455
|
+
"\n\nand the methods available in scipy:\n"+
|
|
456
|
+
native_scipy_methods)
|
|
457
|
+
|
|
458
|
+
# Sets the method and the dictionary of additional in-
|
|
459
|
+
# formation
|
|
460
|
+
|
|
461
|
+
self.optimizer = optimizer_name.lower()
|
|
462
|
+
|
|
463
|
+
self.optimizer_additional_info = (
|
|
464
|
+
optimizer_additional_info)
|
|
465
|
+
|
|
466
|
+
# Sets the training method as the wrapper for scipy
|
|
467
|
+
|
|
468
|
+
self.set_training = self.set_scipy_training
|
|
469
|
+
|
|
470
|
+
# Sets the loss function as the one appropriate for sci-
|
|
471
|
+
# py using a flat tensor of trainable parameters of the
|
|
472
|
+
# model as input
|
|
473
|
+
|
|
474
|
+
self.loss_function = self.loss_function_scipy
|
|
475
|
+
|
|
476
|
+
# Sets the flag that tells if a scipy optimizer will be
|
|
477
|
+
# used to False
|
|
478
|
+
|
|
479
|
+
self.use_scipy_optimizer = True
|
|
480
|
+
|
|
481
|
+
# Otherwise, treats the given optimizer as a keras-native opti-
|
|
482
|
+
# mizer
|
|
483
|
+
|
|
484
|
+
else:
|
|
485
|
+
|
|
486
|
+
# Sets the training method as the wrapper for automatic dif-
|
|
487
|
+
# ferentiation and the keras optimizer
|
|
488
|
+
|
|
489
|
+
self.set_training = self.set_keras_training
|
|
490
|
+
|
|
491
|
+
# Sets the loss function as the one appropriate for Keras
|
|
492
|
+
# optimizers
|
|
493
|
+
|
|
494
|
+
self.loss_function = self.loss_function_keras
|
|
495
|
+
|
|
496
|
+
# Sets the flag that tells if a scipy optimizer will be used
|
|
497
|
+
# to False
|
|
498
|
+
|
|
499
|
+
self.use_scipy_optimizer = False
|
|
500
|
+
|
|
501
|
+
# If a scipy optimizer will be used, instantiates the class for
|
|
502
|
+
# the loss function and automatic differentiation, then takes
|
|
503
|
+
# the flat tensor of model parameters
|
|
504
|
+
|
|
505
|
+
if self.use_scipy_optimizer:
|
|
506
|
+
|
|
507
|
+
# Constructs a class to give the loss function, its gra-
|
|
508
|
+
# dient, and the instructions for parameters (weights and
|
|
509
|
+
# biases) flattening and reconstruction
|
|
510
|
+
|
|
511
|
+
self.loss_class, self.model_parameters = loss_tools.build_loss_gradient_varying_model_parameters(
|
|
512
|
+
self.model, self.loss_metric, self.training_input,
|
|
513
|
+
model_true_values=self.training_trueValues, verbose=verbose)
|
|
514
|
+
|
|
325
515
|
# Defines a method to evaluate the hessian of each output neuron of
|
|
326
516
|
# the model
|
|
327
517
|
|
|
@@ -382,14 +572,29 @@ class ModelCustomTraining:
|
|
|
382
572
|
|
|
383
573
|
return hessian_matrices
|
|
384
574
|
|
|
385
|
-
# Defines a
|
|
575
|
+
# Defines a function to evaluate the loss function from the input
|
|
576
|
+
# proper for use with Keras' optimizers
|
|
386
577
|
|
|
387
|
-
|
|
578
|
+
@tf.function
|
|
579
|
+
def loss_function_keras(self, model_parameters):
|
|
580
|
+
|
|
581
|
+
# Gets the model response
|
|
582
|
+
|
|
583
|
+
y_training = self.model(self.training_input)
|
|
584
|
+
|
|
585
|
+
# Gets the loss value
|
|
586
|
+
|
|
587
|
+
return self.loss_metric(self.training_trueValues, y_training)
|
|
588
|
+
|
|
589
|
+
# Defines a method to evaluate the loss function given the trainable
|
|
590
|
+
# parameters as input
|
|
591
|
+
|
|
592
|
+
def loss_function_scipy(self, model_parameters):
|
|
388
593
|
|
|
389
594
|
# Gets the loss value and returns it
|
|
390
595
|
|
|
391
596
|
return self.loss_class.evaluate_scalar_function(
|
|
392
|
-
|
|
597
|
+
model_parameters)
|
|
393
598
|
|
|
394
599
|
# Defines a function to evaluate the loss function on other sets of
|
|
395
600
|
# data
|
|
@@ -452,19 +657,91 @@ class ModelCustomTraining:
|
|
|
452
657
|
# Defines a method for training, it assembles the optimization pro-
|
|
453
658
|
# blem and runs it
|
|
454
659
|
|
|
455
|
-
def
|
|
660
|
+
def set_scipy_training(self, n_max_iterations):
|
|
661
|
+
|
|
662
|
+
# Updates the dictionary of options
|
|
663
|
+
|
|
664
|
+
self.optimizer_additional_info["maxiter"] = n_max_iterations
|
|
456
665
|
|
|
457
666
|
# Sets the minimization problem using the minimize class from
|
|
458
667
|
# scipy
|
|
459
668
|
|
|
460
669
|
minimization_problem = minimize(self.loss_class,
|
|
461
670
|
self.model_parameters, method=self.optimizer, jac=True, tol=
|
|
462
|
-
self.gradient_tolerance, options=
|
|
671
|
+
self.gradient_tolerance, options=self.optimizer_additional_info,
|
|
463
672
|
callback=self.callback)
|
|
464
673
|
|
|
465
674
|
# Updates the model parameters
|
|
466
675
|
|
|
467
676
|
self.model_parameters = minimization_problem.x
|
|
677
|
+
|
|
678
|
+
return None, None
|
|
679
|
+
|
|
680
|
+
# Defines a method for the train step using native keras optimizers
|
|
681
|
+
|
|
682
|
+
def set_keras_training(self, n_max_iterations):
|
|
683
|
+
|
|
684
|
+
# Initializes the last evaluations of loss and gradient vectors
|
|
685
|
+
|
|
686
|
+
loss_evaluation = None
|
|
687
|
+
|
|
688
|
+
gradient_evaluation = None
|
|
689
|
+
|
|
690
|
+
# Iterates through the maximum number of iterations
|
|
691
|
+
|
|
692
|
+
for i in range(n_max_iterations):
|
|
693
|
+
|
|
694
|
+
loss_evaluation, gradient_evaluation = self.keras_training_step()
|
|
695
|
+
|
|
696
|
+
# Evaluates the gradient's norm
|
|
697
|
+
|
|
698
|
+
gradient_norm = tf.linalg.global_norm(gradient_evaluation)
|
|
699
|
+
|
|
700
|
+
if gradient_norm.numpy()<=self.gradient_tolerance:
|
|
701
|
+
|
|
702
|
+
print("The gradient's norm has reached the value of "+
|
|
703
|
+
str(gradient_norm.numpy())+", which is less than the t"+
|
|
704
|
+
"hreshold of "+str(self.gradient_tolerance)+". Thus, s"+
|
|
705
|
+
"tops the optimization procedure at iteration "+str(i)+
|
|
706
|
+
"\n")
|
|
707
|
+
|
|
708
|
+
break
|
|
709
|
+
|
|
710
|
+
# Prints the callback
|
|
711
|
+
|
|
712
|
+
self.callback(None)
|
|
713
|
+
|
|
714
|
+
# Updates the flat tensor of trainable parameters from the upda-
|
|
715
|
+
# ted parameters of the model
|
|
716
|
+
|
|
717
|
+
self.model_parameters, _ = parameters_tools.model_parameters_to_flat_tensor_and_shapes(
|
|
718
|
+
self.model)
|
|
719
|
+
|
|
720
|
+
# Returns the last evaluations of the loss function and of the
|
|
721
|
+
# gradient vector
|
|
722
|
+
|
|
723
|
+
return loss_evaluation, gradient_evaluation
|
|
724
|
+
|
|
725
|
+
# Defines a function to compute a single training step using a nati-
|
|
726
|
+
# ve keras optimizer
|
|
727
|
+
|
|
728
|
+
@tf.function
|
|
729
|
+
def keras_training_step(self):
|
|
730
|
+
|
|
731
|
+
# Computes the gradient using automatic differentiation
|
|
732
|
+
|
|
733
|
+
with tf.GradientTape() as tape:
|
|
734
|
+
|
|
735
|
+
loss = self.loss_function_keras()
|
|
736
|
+
|
|
737
|
+
gradients = tape.gradient(loss, self.model.trainable_variables)
|
|
738
|
+
|
|
739
|
+
# Applies the gradient vector to the optimizer
|
|
740
|
+
|
|
741
|
+
self.optimizer.apply_gradients(zip(gradients,
|
|
742
|
+
self.model.trainable_variables))
|
|
743
|
+
|
|
744
|
+
return loss, gradients
|
|
468
745
|
|
|
469
746
|
# Defines a method for the optimization loop. But names it call so
|
|
470
747
|
# that it is called as soon as the class is created
|
|
@@ -475,8 +752,7 @@ class ModelCustomTraining:
|
|
|
475
752
|
|
|
476
753
|
start_time = time.time()
|
|
477
754
|
|
|
478
|
-
initial_loss = self.
|
|
479
|
-
self.model_parameters).numpy()
|
|
755
|
+
initial_loss = self.loss_function(self.model_parameters).numpy()
|
|
480
756
|
|
|
481
757
|
# Iterates through the optimization loop
|
|
482
758
|
|
|
@@ -516,18 +792,27 @@ class ModelCustomTraining:
|
|
|
516
792
|
# Calls the optimization procedure. Using the custom op-
|
|
517
793
|
# timizer
|
|
518
794
|
|
|
519
|
-
self.set_training(
|
|
795
|
+
loss_value, evaluated_gradient = self.set_training(
|
|
796
|
+
self.verbose_deltaIterations)
|
|
520
797
|
|
|
521
|
-
#
|
|
798
|
+
# If the loss value is None, it signifies that a custom
|
|
799
|
+
# optimizer was used and the loss function and gradient
|
|
800
|
+
# vector must be evaluated from the model parameters
|
|
522
801
|
|
|
523
|
-
|
|
524
|
-
self.model_parameters)
|
|
802
|
+
if self.use_scipy_optimizer:
|
|
525
803
|
|
|
526
|
-
|
|
527
|
-
# method
|
|
804
|
+
# Gets the loss function value and the gradient
|
|
528
805
|
|
|
529
|
-
|
|
530
|
-
|
|
806
|
+
loss_value = self.loss_function(
|
|
807
|
+
self.model_parameters)
|
|
808
|
+
|
|
809
|
+
# Gets the gradient from the second position of the
|
|
810
|
+
# call method
|
|
811
|
+
|
|
812
|
+
evaluated_gradient = self.loss_class(
|
|
813
|
+
self.model_parameters)[1]
|
|
814
|
+
|
|
815
|
+
# Gets the gradient norm
|
|
531
816
|
|
|
532
817
|
gradient_value = tf.norm(evaluated_gradient).numpy()
|
|
533
818
|
|
|
@@ -544,11 +829,11 @@ class ModelCustomTraining:
|
|
|
544
829
|
|
|
545
830
|
break
|
|
546
831
|
|
|
547
|
-
print("
|
|
548
|
-
+": loss="+format(loss_value.numpy(), '.5e')+
|
|
549
|
-
"
|
|
550
|
-
" norm divided by the square root of the
|
|
551
|
-
"
|
|
832
|
+
print("\nIteration group "+integer_toString(i,
|
|
833
|
+
max_digits)+": loss="+format(loss_value.numpy(), '.5e')+
|
|
834
|
+
", gradient norm: "+format(gradient_value, '.5e')+",\n"+
|
|
835
|
+
"gradient norm divided by the square root of the numbe"+
|
|
836
|
+
"r of trainable parameters: "+format(gradient_value/
|
|
552
837
|
self.number_trainable_parameters, '.5e')+"\nThe maximu"+
|
|
553
838
|
"m component of the gradient in absolute value is: "+
|
|
554
839
|
format(gradient_maximum_component, '.5e')+"\nThis cycl"+
|
|
@@ -573,8 +858,8 @@ class ModelCustomTraining:
|
|
|
573
858
|
|
|
574
859
|
# Gets the final loss function
|
|
575
860
|
|
|
576
|
-
final_loss = self.
|
|
577
|
-
|
|
861
|
+
final_loss = self.loss_function(self.model_parameters
|
|
862
|
+
).numpy()
|
|
578
863
|
|
|
579
864
|
print("\n#################################################"+
|
|
580
865
|
"#######################\n# Trainin"+
|
|
@@ -588,10 +873,13 @@ class ModelCustomTraining:
|
|
|
588
873
|
|
|
589
874
|
print("Training time: "+str(self.elapsed_time)+" seconds.\n")
|
|
590
875
|
|
|
591
|
-
# Gets the trained parameters and reassigns them to the model
|
|
876
|
+
# Gets the trained parameters and reassigns them to the model if
|
|
877
|
+
# the model was trained using optimizers from scipy
|
|
592
878
|
|
|
593
|
-
self.
|
|
594
|
-
|
|
879
|
+
if self.use_scipy_optimizer:
|
|
880
|
+
|
|
881
|
+
self.loss_class.model_output_given_parameters.update_model_parameters(
|
|
882
|
+
self.model, self.model_parameters)
|
|
595
883
|
|
|
596
884
|
# Saves the model automatically and returns it as well
|
|
597
885
|
|
|
@@ -645,7 +933,12 @@ class ModelCustomTraining:
|
|
|
645
933
|
|
|
646
934
|
for i in range(best_models_rank_size):
|
|
647
935
|
|
|
648
|
-
models_ranking_dict[i] = np.inf
|
|
936
|
+
models_ranking_dict[i+1] = np.inf
|
|
937
|
+
|
|
938
|
+
# Instantiates the class that prints information
|
|
939
|
+
|
|
940
|
+
print_class = PrintForLoopInfo(["Initializes the realization o"+
|
|
941
|
+
"f number "])
|
|
649
942
|
|
|
650
943
|
# Initializes a variable to store the elapsed time for training
|
|
651
944
|
# each model at each realization
|
|
@@ -657,6 +950,11 @@ class ModelCustomTraining:
|
|
|
657
950
|
for i in tqdm(range(n_realizations), desc="Training realizatio"+
|
|
658
951
|
"ns"):
|
|
659
952
|
|
|
953
|
+
# Prints information on terminal that tells that this reali-
|
|
954
|
+
# zatio is being initialized
|
|
955
|
+
|
|
956
|
+
print_class([i+1])
|
|
957
|
+
|
|
660
958
|
# Reinitializes the model parameters using the same initia-
|
|
661
959
|
# lizers that were assigned when the model was first created
|
|
662
960
|
|
|
@@ -703,13 +1001,11 @@ class ModelCustomTraining:
|
|
|
703
1001
|
# Iterates through the best ranking models to check if the
|
|
704
1002
|
# current one outperforms any of them
|
|
705
1003
|
|
|
706
|
-
for model_number in models_ranking_dict.
|
|
1004
|
+
for model_number, model_loss in models_ranking_dict.items():
|
|
707
1005
|
|
|
708
1006
|
# Gets the model loss and compares it to the loss value
|
|
709
1007
|
# of the current model
|
|
710
1008
|
|
|
711
|
-
model_loss = models_ranking_dict[model_number]
|
|
712
|
-
|
|
713
1009
|
if model_loss>training_loss:
|
|
714
1010
|
|
|
715
1011
|
# Deletes the worst performing model, which is the
|
|
@@ -734,8 +1030,8 @@ class ModelCustomTraining:
|
|
|
734
1030
|
|
|
735
1031
|
# And renames the model file
|
|
736
1032
|
|
|
737
|
-
path_tools.rename_file(str(j)+"_best_"+
|
|
738
|
-
model_base_name+".keras", str(j
|
|
1033
|
+
path_tools.rename_file(str(j-1)+"_best_"+
|
|
1034
|
+
model_base_name+".keras", str(j)+"_best_"+
|
|
739
1035
|
model_base_name+".keras", parent_path=
|
|
740
1036
|
self.parent_path, saving_function=
|
|
741
1037
|
self.model.save)
|
|
@@ -748,7 +1044,7 @@ class ModelCustomTraining:
|
|
|
748
1044
|
# Saves this model
|
|
749
1045
|
|
|
750
1046
|
path_tools.rename_file(self.save_model_file, str(
|
|
751
|
-
model_number
|
|
1047
|
+
model_number)+"_best_"+model_base_name+".keras",
|
|
752
1048
|
saving_function=self.model.save)
|
|
753
1049
|
|
|
754
1050
|
# Breaks the loop
|