diff --git a/docs/Project.toml b/docs/Project.toml index eb91252b..0c481b28 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -15,14 +15,15 @@ MLJIteration = "614be32b-d00c-4edb-bd02-1eb411ab5e55" MLJMultivariateStatsInterface = "1b6a4a23-ba22-4f51-9698-8599985d3728" MLJXGBoostInterface = "54119dfa-1dab-4055-a167-80440f4f7a91" MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" WordTokenizers = "796a5d58-b03d-544a-977e-18100b691f6e" [compat] -Documenter = "1" \ No newline at end of file +Documenter = "1" diff --git a/docs/src/common_workflows/architecture_search/Manifest.toml b/docs/src/common_workflows/architecture_search/Manifest.toml deleted file mode 100644 index 0a20d4e5..00000000 --- a/docs/src/common_workflows/architecture_search/Manifest.toml +++ /dev/null @@ -1,1364 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "0f9d92a558d050b0bba129bd2d0367e7b1953ddf" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/docs/src/common_workflows/architecture_search/Project.toml b/docs/src/common_workflows/architecture_search/Project.toml deleted file mode 100644 index 4226930c..00000000 --- a/docs/src/common_workflows/architecture_search/Project.toml +++ /dev/null @@ -1,7 +0,0 @@ -[deps] -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/architecture_search/README.md b/docs/src/common_workflows/architecture_search/README.md index b68a07e7..ada5c5a4 100644 --- a/docs/src/common_workflows/architecture_search/README.md +++ b/docs/src/common_workflows/architecture_search/README.md @@ -1,15 +1,16 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/architecture_search/notebook.ipynb b/docs/src/common_workflows/architecture_search/notebook.ipynb index 286491d1..7e77a316 100644 --- a/docs/src/common_workflows/architecture_search/notebook.ipynb +++ b/docs/src/common_workflows/architecture_search/notebook.ipynb @@ -31,14 +31,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/architecture_search`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -47,7 +48,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -59,14 +60,25 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "using RDatasets: RDatasets # Dataset source\n", "using DataFrames # To view tuning results in a table\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -83,10 +95,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "\u001b[1m5×4 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m SepalLength \u001b[0m\u001b[1m SepalWidth \u001b[0m\u001b[1m PetalLength \u001b[0m\u001b[1m PetalWidth \u001b[0m\n │\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\n─────┼──────────────────────────────────────────────────\n 1 │ 6.7 3.3 5.7 2.1\n 2 │ 5.7 2.8 4.1 1.3\n 3 │ 7.2 3.0 5.8 1.6\n 4 │ 4.4 2.9 1.4 0.2\n 5 │ 5.6 2.5 3.9 1.1", - "text/html": [ - "
5×4 DataFrame
RowSepalLengthSepalWidthPetalLengthPetalWidth
Float32Float32Float32Float32
16.73.35.72.1
25.72.84.11.3
37.23.05.81.6
44.42.91.40.2
55.62.53.91.1
" - ] + "text/plain": "(sepal_length = Float32[6.1, 7.3, 6.3, 4.8, 5.9, 7.1, 6.7, 5.4, 6.0, 6.9 … 5.0, 6.4, 5.7, 4.6, 5.5, 4.6, 5.6, 5.7, 6.0, 5.0], sepal_width = Float32[2.9, 2.9, 3.4, 3.4, 3.0, 3.0, 3.0, 3.9, 3.0, 3.1 … 3.3, 2.7, 2.5, 3.2, 2.4, 3.1, 2.8, 3.0, 2.9, 3.5], petal_length = Float32[4.7, 6.3, 5.6, 1.9, 5.1, 5.9, 5.0, 1.7, 4.8, 4.9 … 1.4, 5.3, 5.0, 1.4, 3.7, 1.5, 4.9, 4.2, 4.5, 1.6], petal_width = Float32[1.4, 1.8, 2.4, 0.2, 1.8, 2.1, 1.7, 0.4, 1.8, 1.5 … 0.2, 1.9, 2.0, 0.2, 1.0, 0.2, 2.0, 1.2, 1.5, 0.6])" }, "metadata": {}, "execution_count": 3 @@ -94,10 +103,9 @@ ], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng = 123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters\n", - "first(X, 5)" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": 3 @@ -130,7 +138,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (1, 1, 1), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (1, 1, 1), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 4 @@ -144,7 +152,7 @@ " optimiser = Optimisers.ADAM(0.01),\n", " batch_size = 8,\n", " epochs = 10,\n", - " rng = 42,\n", + " rng = stable_rng(),\n", ")" ], "metadata": {}, @@ -306,7 +314,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (45, 49, 21), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (25, 29, 25), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0xbd18744daa970cb92512f5be67d25c4b), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 8 @@ -341,9 +349,9 @@ { "output_type": "execute_result", "data": { - "text/plain": "\u001b[1m10×2 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m mlp \u001b[0m\u001b[1m measurement \u001b[0m\n │\u001b[90m MLP… \u001b[0m\u001b[90m Float64 \u001b[0m\n─────┼────────────────────────────────────────────\n 1 │ MLP(hidden = (45, 49, 21), …) 0.0860875\n 2 │ MLP(hidden = (25, 45, 33), …) 0.0877367\n 3 │ MLP(hidden = (29, 17, 53), …) 0.0970372\n 4 │ MLP(hidden = (61, 9, 29), …) 0.0970978\n 5 │ MLP(hidden = (49, 49, 9), …) 0.0971594\n 6 │ MLP(hidden = (21, 33, 61), …) 0.0984172\n 7 │ MLP(hidden = (57, 61, 61), …) 0.099232\n 8 │ MLP(hidden = (41, 13, 25), …) 0.101498\n 9 │ MLP(hidden = (53, 29, 21), …) 0.105323\n 10 │ MLP(hidden = (57, 33, 45), …) 0.110168", + "text/plain": "\u001b[1m10×2 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m mlp \u001b[0m\u001b[1m measurement \u001b[0m\n\u001b[1m \u001b[0m│\u001b[90m MLP… \u001b[0m\u001b[90m Float64 \u001b[0m\n─────┼────────────────────────────────────────────\n 1 │ MLP(hidden = (25, 29, 25), …) 0.0650255\n 2 │ MLP(hidden = (29, 13, 29), …) 0.0653112\n 3 │ MLP(hidden = (33, 21, 21), …) 0.0694249\n 4 │ MLP(hidden = (61, 61, 9), …) 0.0711421\n 5 │ MLP(hidden = (13, 45, 17), …) 0.0712663\n 6 │ MLP(hidden = (13, 45, 17), …) 0.0712663\n 7 │ MLP(hidden = (61, 49, 17), …) 0.072466\n 8 │ MLP(hidden = (53, 57, 33), …) 0.0735245\n 9 │ MLP(hidden = (9, 53, 61), …) 0.0741801\n 10 │ MLP(hidden = (9, 17, 29), …) 0.0747848", "text/html": [ - "
10×2 DataFrame
Rowmlpmeasurement
MLP…Float64
1MLP(hidden = (45, 49, 21), …)0.0860875
2MLP(hidden = (25, 45, 33), …)0.0877367
3MLP(hidden = (29, 17, 53), …)0.0970372
4MLP(hidden = (61, 9, 29), …)0.0970978
5MLP(hidden = (49, 49, 9), …)0.0971594
6MLP(hidden = (21, 33, 61), …)0.0984172
7MLP(hidden = (57, 61, 61), …)0.099232
8MLP(hidden = (41, 13, 25), …)0.101498
9MLP(hidden = (53, 29, 21), …)0.105323
10MLP(hidden = (57, 33, 45), …)0.110168
" + "
10×2 DataFrame
Rowmlpmeasurement
MLP…Float64
1MLP(hidden = (25, 29, 25), …)0.0650255
2MLP(hidden = (29, 13, 29), …)0.0653112
3MLP(hidden = (33, 21, 21), …)0.0694249
4MLP(hidden = (61, 61, 9), …)0.0711421
5MLP(hidden = (13, 45, 17), …)0.0712663
6MLP(hidden = (13, 45, 17), …)0.0712663
7MLP(hidden = (61, 49, 17), …)0.072466
8MLP(hidden = (53, 57, 33), …)0.0735245
9MLP(hidden = (9, 53, 61), …)0.0741801
10MLP(hidden = (9, 17, 29), …)0.0747848
" ] }, "metadata": {}, @@ -352,7 +360,7 @@ ], "cell_type": "code", "source": [ - "history = report(mach).history\n", + "history = report(mach).history;\n", "history_df = DataFrame(\n", " mlp = [x[:model].builder for x in history],\n", " measurement = [x[:measurement][1] for x in history],\n", @@ -378,11 +386,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/architecture_search/notebook.jl b/docs/src/common_workflows/architecture_search/notebook.jl index a5e4a15a..c57ec7f2 100644 --- a/docs/src/common_workflows/architecture_search/notebook.jl +++ b/docs/src/common_workflows/architecture_search/notebook.jl @@ -9,25 +9,27 @@ # we will be using a simple random search. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ # Has MLJFlux models using Flux # For more flexibility -using RDatasets: RDatasets # Dataset source using DataFrames # To view tuning results in a table import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) # ### Loading and Splitting the Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng = 123); -X = Float32.(X); # To be compatible with type of network network parameters -first(X, 5) +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data # ### Instantiating the model @@ -41,7 +43,7 @@ clf = NeuralNetworkClassifier( optimiser = Optimisers.ADAM(0.01), batch_size = 8, epochs = 10, - rng = 42, + rng = stable_rng(), ) @@ -128,7 +130,7 @@ fitted_params(mach).best_model # Let's analyze the search results by converting the history array to a dataframe and # viewing it: -history = report(mach).history +history = report(mach).history; history_df = DataFrame( mlp = [x[:model].builder for x in history], measurement = [x[:measurement][1] for x in history], diff --git a/docs/src/common_workflows/architecture_search/notebook.md b/docs/src/common_workflows/architecture_search/notebook.md index b355247a..c3b7dbb8 100644 --- a/docs/src/common_workflows/architecture_search/notebook.md +++ b/docs/src/common_workflows/architecture_search/notebook.md @@ -12,25 +12,26 @@ with tuning model hyperparameters defining the architecture itself. Although it' typically performed with sophisticated search algorithms for efficiency, in this example we will be using a simple random search. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example architecture_search using MLJ # Has MLJFlux models using Flux # For more flexibility -using RDatasets: RDatasets # Dataset source using DataFrames # To view tuning results in a table import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) ```` ### Loading and Splitting the Data ````@example architecture_search -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng = 123); -X = Float32.(X); # To be compatible with type of network network parameters -first(X, 5) +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data ```` ### Instantiating the model @@ -45,7 +46,7 @@ clf = NeuralNetworkClassifier( optimiser = Optimisers.ADAM(0.01), batch_size = 8, epochs = 10, - rng = 42, + rng = stable_rng(), ) ```` @@ -145,7 +146,7 @@ Let's analyze the search results by converting the history array to a dataframe viewing it: ````@example architecture_search -history = report(mach).history +history = report(mach).history; history_df = DataFrame( mlp = [x[:model].builder for x in history], measurement = [x[:measurement][1] for x in history], diff --git a/docs/src/common_workflows/architecture_search/notebook.unexecuted.ipynb b/docs/src/common_workflows/architecture_search/notebook.unexecuted.ipynb index 6093c80e..09f6192f 100644 --- a/docs/src/common_workflows/architecture_search/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/architecture_search/notebook.unexecuted.ipynb @@ -30,7 +30,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -39,7 +40,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -56,9 +57,11 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "using RDatasets: RDatasets # Dataset source\n", "using DataFrames # To view tuning results in a table\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -74,10 +77,9 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng = 123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters\n", - "first(X, 5)" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": null @@ -107,7 +109,7 @@ " optimiser = Optimisers.ADAM(0.01),\n", " batch_size = 8,\n", " epochs = 10,\n", - " rng = 42,\n", + " rng = stable_rng(),\n", ")" ], "metadata": {}, @@ -276,7 +278,7 @@ "outputs": [], "cell_type": "code", "source": [ - "history = report(mach).history\n", + "history = report(mach).history;\n", "history_df = DataFrame(\n", " mlp = [x[:model].builder for x in history],\n", " measurement = [x[:measurement][1] for x in history],\n", @@ -302,11 +304,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/comparison/Manifest.toml b/docs/src/common_workflows/comparison/Manifest.toml deleted file mode 100644 index cc7f5095..00000000 --- a/docs/src/common_workflows/comparison/Manifest.toml +++ /dev/null @@ -1,2089 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "40dffa20f32b34504f6cb1153eb426c75630d036" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Arpack]] -deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] -git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" -uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -version = "0.5.4" - -[[deps.Arpack_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] -git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" -uuid = "68821587-b530-5797-8361-c406ea357684" -version = "3.5.1+1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.CUDA_Driver_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "c48f9da18efd43b6b7adb7ee1f93fe5f2926c339" -uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.9.0+0" - -[[deps.CUDA_Runtime_jll]] -deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "bcba305388e16aa5c879e896726db9e71b4942c6" -uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.14.0+1" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" -weakdeps = ["JSON", "RecipesBase", "SentinelArrays", "StructTypes"] - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.25.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DecisionTree]] -deps = ["AbstractTrees", "DelimitedFiles", "LinearAlgebra", "Random", "ScikitLearnBase", "Statistics"] -git-tree-sha1 = "526ca14aaaf2d5a0e242f3a8a7966eb9065d7d78" -uuid = "7806a523-6efd-50cb-b5f6-3fa6f1930dbb" -version = "0.12.4" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.9+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.5" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.5+0" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.7" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.14.0" - - [deps.JSON3.extensions] - JSON3ArrowExt = ["ArrowTypes"] - - [deps.JSON3.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.3" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJDecisionTreeInterface]] -deps = ["CategoricalArrays", "DecisionTree", "MLJModelInterface", "Random", "Tables"] -git-tree-sha1 = "90ef4d3b6cacec631c57cc034e1e61b4aa0ce511" -uuid = "c6f25543-311c-4c74-83dc-3ea6d1015661" -version = "0.4.2" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJMultivariateStatsInterface]] -deps = ["CategoricalDistributions", "Distances", "LinearAlgebra", "MLJModelInterface", "MultivariateStats", "StatsBase"] -git-tree-sha1 = "0d76e36bf83926235dcd3eaeafa7f47d3e7f32ea" -uuid = "1b6a4a23-ba22-4f51-9698-8599985d3728" -version = "0.5.3" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLJXGBoostInterface]] -deps = ["MLJModelInterface", "SparseArrays", "Tables", "XGBoost"] -git-tree-sha1 = "988c399a352f0b49bc1345c509d8a4800cb468c5" -uuid = "54119dfa-1dab-4055-a167-80440f4f7a91" -version = "0.3.10" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.MultivariateStats]] -deps = ["Arpack", "Distributions", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] -git-tree-sha1 = "816620e3aac93e5b5359e4fdaf23ca4525b00ddf" -uuid = "6f286f6a-111f-5878-ab1e-185364afe411" -version = "0.10.3" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "6e55c6841ce3411ccb3457ee52fc48cb698d6fb0" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.2.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.4" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.ScikitLearnBase]] -deps = ["LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "7877e55c1523a4b336b433da39c8e8c08d2f221f" -uuid = "6e75b9c4-186b-50bd-896f-2d2496a4843e" -version = "0.5.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SparseMatricesCSR]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" -uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" -version = "0.6.7" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XGBoost]] -deps = ["AbstractTrees", "CEnum", "JSON3", "LinearAlgebra", "OrderedCollections", "SparseArrays", "SparseMatricesCSR", "Statistics", "Tables", "XGBoost_jll"] -git-tree-sha1 = "bacb62e07d104630094c8dac2fd070f5d4b9b305" -uuid = "009559a3-9522-5dbb-924b-0b6ed2b22bb9" -version = "2.5.1" - - [deps.XGBoost.extensions] - XGBoostCUDAExt = "CUDA" - XGBoostTermExt = "Term" - - [deps.XGBoost.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Term = "22787eb5-b846-44ae-b979-8e399b8463ab" - -[[deps.XGBoost_jll]] -deps = ["Artifacts", "CUDA_Runtime_jll", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "1c0aa2390a7ebb28a3d6c214f64e57a24091fbd7" -uuid = "a5c6f535-4255-5ca2-a466-0e519f119c46" -version = "2.0.1+0" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.7+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.43.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/common_workflows/comparison/Project.toml b/docs/src/common_workflows/comparison/Project.toml deleted file mode 100644 index 49b9b810..00000000 --- a/docs/src/common_workflows/comparison/Project.toml +++ /dev/null @@ -1,13 +0,0 @@ -[deps] -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -DecisionTree = "7806a523-6efd-50cb-b5f6-3fa6f1930dbb" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJDecisionTreeInterface = "c6f25543-311c-4c74-83dc-3ea6d1015661" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -MLJMultivariateStatsInterface = "1b6a4a23-ba22-4f51-9698-8599985d3728" -MLJXGBoostInterface = "54119dfa-1dab-4055-a167-80440f4f7a91" -MultivariateStats = "6f286f6a-111f-5878-ab1e-185364afe411" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/comparison/README.md b/docs/src/common_workflows/comparison/README.md index b68a07e7..ada5c5a4 100644 --- a/docs/src/common_workflows/comparison/README.md +++ b/docs/src/common_workflows/comparison/README.md @@ -1,15 +1,16 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/comparison/notebook.ipynb b/docs/src/common_workflows/comparison/notebook.ipynb index d968843e..7a5c412b 100644 --- a/docs/src/common_workflows/comparison/notebook.ipynb +++ b/docs/src/common_workflows/comparison/notebook.ipynb @@ -29,14 +29,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/comparison`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -45,7 +46,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -57,14 +58,27 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using DataFrames # To visualize hyperparameter search results\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using Measurements # to get ± functionality\n", + "import CategoricalArrays.unwrap\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -77,11 +91,20 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "(CategoricalArrays.CategoricalValue{String, UInt32}[\"versicolor\", \"virginica\", \"virginica\", \"setosa\", \"virginica\", \"virginica\", \"versicolor\", \"setosa\", \"virginica\", \"versicolor\" … \"setosa\", \"virginica\", \"virginica\", \"setosa\", \"versicolor\", \"setosa\", \"virginica\", \"versicolor\", \"versicolor\", \"setosa\"], (sepal_length = [6.1, 7.3, 6.3, 4.8, 5.9, 7.1, 6.7, 5.4, 6.0, 6.9 … 5.0, 6.4, 5.7, 4.6, 5.5, 4.6, 5.6, 5.7, 6.0, 5.0], sepal_width = [2.9, 2.9, 3.4, 3.4, 3.0, 3.0, 3.0, 3.9, 3.0, 3.1 … 3.3, 2.7, 2.5, 3.2, 2.4, 3.1, 2.8, 3.0, 2.9, 3.5], petal_length = [4.7, 6.3, 5.6, 1.9, 5.1, 5.9, 5.0, 1.7, 4.8, 4.9 … 1.4, 5.3, 5.0, 1.4, 3.7, 1.5, 4.9, 4.2, 4.5, 1.6], petal_width = [1.4, 1.8, 2.4, 0.2, 1.8, 2.1, 1.7, 0.4, 1.8, 1.5 … 0.2, 1.9, 2.0, 0.2, 1.0, 0.2, 2.0, 1.2, 1.5, 0.6]))" + }, + "metadata": {}, + "execution_count": 3 + } + ], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())" ], "metadata": {}, "execution_count": 3 @@ -107,7 +130,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 4 @@ -122,7 +145,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42\n", + " rng=stable_rng(),\n", " )" ], "metadata": {}, @@ -187,7 +210,7 @@ " model=clf4,\n", " ranges=[r1],\n", " tuning=Grid(resolution=10),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=5, rng=stable_rng()),\n", " measure=cross_entropy,\n", ");" ], @@ -223,7 +246,8 @@ "tuned_model = TunedModel(\n", " models=[clf1, clf2, clf3, tuned_model_xg],\n", " tuning=Explicit(),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=2, rng=stable_rng()),\n", + " repeats=5,\n", " measure=cross_entropy,\n", ");" ], @@ -233,24 +257,19 @@ { "cell_type": "markdown", "source": [ - "Then wrapping our tuned model in a machine and fitting it." + "Notice here we are using 5 x 2 Monte Carlo cross-validation." ], "metadata": {} }, { - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "┌ Warning: Layer with Float32 parameters got Float64 input.\n", - "│ The input will be converted, but any earlier layers may be very slow.\n", - "│ layer = Dense(4 => 5, relu) # 25 parameters\n", - "│ summary(x) = \"4×8 Matrix{Float64}\"\n", - "└ @ Flux ~/.julia/packages/Flux/Wz6D4/src/layers/stateless.jl:60\n" - ] - } + "cell_type": "markdown", + "source": [ + "Then wrapping our tuned model in a machine and fitting it." ], + "metadata": {} + }, + { + "outputs": [], "cell_type": "code", "source": [ "mach = machine(tuned_model, X, y);\n", @@ -271,9 +290,9 @@ { "output_type": "execute_result", "data": { - "text/plain": "\u001b[1m4×2 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m mlp \u001b[0m\u001b[1m measurement \u001b[0m\n │\u001b[90m Probabil… \u001b[0m\u001b[90m Float64 \u001b[0m\n─────┼────────────────────────────────────────────────\n 1 │ BayesianLDA(method = gevd, …) 0.0610826\n 2 │ NeuralNetworkClassifier(builder … 0.0857014\n 3 │ RandomForestClassifier(max_depth… 0.107885\n 4 │ ProbabilisticTunedModel(model = … 0.221056", + "text/plain": "\u001b[1m4×2 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m mlp \u001b[0m\u001b[1m measurement \u001b[0m\n\u001b[1m \u001b[0m│\u001b[90m Probabil… \u001b[0m\u001b[90m Measuremen… \u001b[0m\n─────┼────────────────────────────────────────────────\n 1 │ BayesianLDA(method = gevd, …) 0.059±0.015\n 2 │ RandomForestClassifier(max_depth… 0.118±0.018\n 3 │ NeuralNetworkClassifier(builder … 0.119±0.047\n 4 │ ProbabilisticTunedModel(model = … 0.29±0.12", "text/html": [ - "
4×2 DataFrame
Rowmlpmeasurement
Probabil…Float64
1BayesianLDA(method = gevd, …)0.0610826
2NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …)0.0857014
3RandomForestClassifier(max_depth = -1, …)0.107885
4ProbabilisticTunedModel(model = XGBoostClassifier(test = 1, …), …)0.221056
" + "
4×2 DataFrame
Rowmlpmeasurement
Probabil…Measurem…
1BayesianLDA(method = gevd, …)0.059±0.015
2RandomForestClassifier(max_depth = -1, …)0.118±0.018
3NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …)0.119±0.047
4ProbabilisticTunedModel(model = XGBoostClassifier(test = 1, …), …)0.29±0.12
" ] }, "metadata": {}, @@ -284,8 +303,11 @@ "source": [ "history = report(mach).history\n", "history_df = DataFrame(\n", - " mlp = [x[:model] for x in history],\n", - " measurement = [x[:measurement][1] for x in history],\n", + " mlp = [x.model for x in history],\n", + " measurement = [\n", + " x.evaluation.measurement[1] ±\n", + " x.evaluation.uncertainty_radius_95[1] for x in history\n", + " ],\n", ")\n", "sort!(history_df, [order(:measurement)])" ], @@ -315,11 +337,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/comparison/notebook.jl b/docs/src/common_workflows/comparison/notebook.jl index 6716ec52..cdf7084d 100644 --- a/docs/src/common_workflows/comparison/notebook.jl +++ b/docs/src/common_workflows/comparison/notebook.jl @@ -5,25 +5,30 @@ # In this workflow example, we see how we can compare different machine learning models # with a neural network from MLJFlux. + using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* - +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using DataFrames # To visualize hyperparameter search results import Optimisers # native Flux.jl optimisers no longer supported +using Measurements # to get ± functionality +import CategoricalArrays.unwrap +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNG(123) # ### Loading and Splitting the Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) # ### Instantiating the models Now let's construct our model. This follows a similar setup @@ -36,7 +41,7 @@ clf1 = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42 + rng=stable_rng(), ) # Let's as well load and construct three other classical machine learning models: @@ -59,7 +64,7 @@ tuned_model_xg = TunedModel( model=clf4, ranges=[r1], tuning=Grid(resolution=10), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=5, rng=stable_rng()), measure=cross_entropy, ); @@ -73,10 +78,13 @@ tuned_model_xg = TunedModel( tuned_model = TunedModel( models=[clf1, clf2, clf3, tuned_model_xg], tuning=Explicit(), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=2, rng=stable_rng()), + repeats=5, measure=cross_entropy, ); +# Notice here we are using 5 x 2 Monte Carlo cross-validation. + # Then wrapping our tuned model in a machine and fitting it. mach = machine(tuned_model, X, y); @@ -85,8 +93,11 @@ fit!(mach, verbosity=0); # Now let's see the history for more details on the performance for each of the models history = report(mach).history history_df = DataFrame( - mlp = [x[:model] for x in history], - measurement = [x[:measurement][1] for x in history], + mlp = [x.model for x in history], + measurement = [ + x.evaluation.measurement[1] ± + x.evaluation.uncertainty_radius_95[1] for x in history + ], ) sort!(history_df, [order(:measurement)]) diff --git a/docs/src/common_workflows/comparison/notebook.md b/docs/src/common_workflows/comparison/notebook.md index 8d689eb1..21a83a8f 100644 --- a/docs/src/common_workflows/comparison/notebook.md +++ b/docs/src/common_workflows/comparison/notebook.md @@ -10,24 +10,27 @@ This demonstration is available as a Jupyter notebook or julia script In this workflow example, we see how we can compare different machine learning models with a neural network from MLJFlux. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example comparison using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using DataFrames # To visualize hyperparameter search results import Optimisers # native Flux.jl optimisers no longer supported +using Measurements # to get ± functionality +import CategoricalArrays.unwrap +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNG(123) ```` ### Loading and Splitting the Data ````@example comparison -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -nothing #hide +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) ```` ### Instantiating the models Now let's construct our model. This follows a similar setup @@ -41,7 +44,7 @@ clf1 = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42 + rng=stable_rng(), ) ```` @@ -69,7 +72,7 @@ tuned_model_xg = TunedModel( model=clf4, ranges=[r1], tuning=Grid(resolution=10), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=5, rng=stable_rng()), measure=cross_entropy, ); nothing #hide @@ -86,12 +89,15 @@ We simply pass the four models to the `models` argument of the `TunedModel` cons tuned_model = TunedModel( models=[clf1, clf2, clf3, tuned_model_xg], tuning=Explicit(), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=2, rng=stable_rng()), + repeats=5, measure=cross_entropy, ); nothing #hide ```` +Notice here we are using 5 x 2 Monte Carlo cross-validation. + Then wrapping our tuned model in a machine and fitting it. ````@example comparison @@ -105,8 +111,11 @@ Now let's see the history for more details on the performance for each of the mo ````@example comparison history = report(mach).history history_df = DataFrame( - mlp = [x[:model] for x in history], - measurement = [x[:measurement][1] for x in history], + mlp = [x.model for x in history], + measurement = [ + x.evaluation.measurement[1] ± + x.evaluation.uncertainty_radius_95[1] for x in history + ], ) sort!(history_df, [order(:measurement)]) ```` diff --git a/docs/src/common_workflows/comparison/notebook.unexecuted.ipynb b/docs/src/common_workflows/comparison/notebook.unexecuted.ipynb index 65e472ff..09cdcd80 100644 --- a/docs/src/common_workflows/comparison/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/comparison/notebook.unexecuted.ipynb @@ -28,7 +28,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -37,7 +38,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -54,9 +55,13 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using DataFrames # To visualize hyperparameter search results\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using Measurements # to get ± functionality\n", + "import CategoricalArrays.unwrap\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -72,8 +77,8 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())" ], "metadata": {}, "execution_count": null @@ -97,7 +102,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42\n", + " rng=stable_rng(),\n", " )" ], "metadata": {}, @@ -149,7 +154,7 @@ " model=clf4,\n", " ranges=[r1],\n", " tuning=Grid(resolution=10),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=5, rng=stable_rng()),\n", " measure=cross_entropy,\n", ");" ], @@ -185,13 +190,21 @@ "tuned_model = TunedModel(\n", " models=[clf1, clf2, clf3, tuned_model_xg],\n", " tuning=Explicit(),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=2, rng=stable_rng()),\n", + " repeats=5,\n", " measure=cross_entropy,\n", ");" ], "metadata": {}, "execution_count": null }, + { + "cell_type": "markdown", + "source": [ + "Notice here we are using 5 x 2 Monte Carlo cross-validation." + ], + "metadata": {} + }, { "cell_type": "markdown", "source": [ @@ -222,8 +235,11 @@ "source": [ "history = report(mach).history\n", "history_df = DataFrame(\n", - " mlp = [x[:model] for x in history],\n", - " measurement = [x[:measurement][1] for x in history],\n", + " mlp = [x.model for x in history],\n", + " measurement = [\n", + " x.evaluation.measurement[1] ±\n", + " x.evaluation.uncertainty_radius_95[1] for x in history\n", + " ],\n", ")\n", "sort!(history_df, [order(:measurement)])" ], @@ -253,11 +269,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/composition/Manifest.toml b/docs/src/common_workflows/composition/Manifest.toml deleted file mode 100644 index c4f42e22..00000000 --- a/docs/src/common_workflows/composition/Manifest.toml +++ /dev/null @@ -1,1489 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "99b4ea563e30c60eaf60c8393a5edf34416a3ab4" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.AxisArrays]] -deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] -git-tree-sha1 = "16351be62963a67ac4083f748fdb3cca58bfd52f" -uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" -version = "0.4.7" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.Clustering]] -deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "9ebb045901e9bbf58767a9f34ff89831ed711aae" -uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" -version = "0.15.7" - -[[deps.CoDa]] -deps = ["AxisArrays", "Distances", "Distributions", "FillArrays", "LinearAlgebra", "Printf", "Random", "StaticArrays", "Statistics", "Tables"] -git-tree-sha1 = "0ae819d8911029b988479b8b447bf4fad4b5bfa7" -uuid = "5900dafe-f573-5c72-b367-76665857777b" -version = "1.4.0" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColumnSelectors]] -git-tree-sha1 = "221157488d6e5942ef8cc53086cad651b632ed4e" -uuid = "9cc86067-7e36-4c61-b350-1ac9833d277f" -version = "0.1.1" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" -weakdeps = ["IntervalSets", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataScienceTraits]] -deps = ["Dates"] -git-tree-sha1 = "ba239c8cf83cae0103012672cfba8abc6bc898c9" -uuid = "6cb2f572-2d2b-4ba6-bdb3-e710fa044d6c" -version = "0.3.1" - - [deps.DataScienceTraits.extensions] - DataScienceTraitsCategoricalArraysExt = "CategoricalArrays" - DataScienceTraitsCoDaExt = "CoDa" - DataScienceTraitsDistributionsExt = "Distributions" - DataScienceTraitsDynamicQuantitiesExt = "DynamicQuantities" - DataScienceTraitsMeshesExt = "Meshes" - DataScienceTraitsUnitfulExt = "Unitful" - - [deps.DataScienceTraits.weakdeps] - CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" - CoDa = "5900dafe-f573-5c72-b367-76665857777b" - Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" - DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821" - Meshes = "eacbb407-ea5a-433e-ab97-5258b1ca43fa" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.Imbalance]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Clustering", "Distances", "LinearAlgebra", "MLJModelInterface", "MLJTestInterface", "NearestNeighbors", "OrderedCollections", "ProgressMeter", "Random", "ScientificTypes", "Statistics", "StatsBase", "TableOperations", "TableTransforms", "Tables", "TransformsBase"] -git-tree-sha1 = "f39c71f6099147ad29fcf87d3ed18ce1e5b3b615" -uuid = "c709b415-507b-45b7-9a3d-1767c89fde68" -version = "0.1.6" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IntervalSets]] -git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.10" -weakdeps = ["Random", "RecipesBase", "Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsRandomExt = "Random" - IntervalSetsRecipesBaseExt = "RecipesBase" - IntervalSetsStatisticsExt = "Statistics" - -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "e7cbed5032c4c397a6ac23d1493f3289e01231c4" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.14" -weakdeps = ["Dates"] - - [deps.InverseFunctions.extensions] - DatesExt = "Dates" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterTools]] -git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.10.0" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTestInterface]] -deps = ["MLJBase", "Pkg", "Test"] -git-tree-sha1 = "f72bad656f93179b31c8bdcab15ccd2091e7da3c" -uuid = "72560011-54dd-4dc2-94f3-c5de45b75ecd" -version = "0.2.6" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NearestNeighbors]] -deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "ded64ff6d4fdd1cb68dfcbb818c69e144a5b2e4c" -uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.16" - -[[deps.NelderMead]] -git-tree-sha1 = "25abc2f9b1c752e69229f37909461befa7c1f85d" -uuid = "2f6b4ddb-b4ff-44c0-b59b-2ab99302f970" -version = "0.4.0" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RangeArrays]] -git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" -uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" -version = "0.3.2" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableOperations]] -deps = ["SentinelArrays", "Tables", "Test"] -git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" -uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" -version = "1.2.0" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.TableTransforms]] -deps = ["AbstractTrees", "CategoricalArrays", "CoDa", "ColumnSelectors", "DataScienceTraits", "Distributions", "InverseFunctions", "LinearAlgebra", "NelderMead", "PrettyTables", "Random", "Statistics", "StatsBase", "Tables", "Transducers", "TransformsBase", "Unitful"] -git-tree-sha1 = "dae558bb3b3853db52d15750834af9e47e8fea6e" -uuid = "0d432bfd-3ee1-4ac1-886a-39f05cc69a3e" -version = "1.31.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.TransformsBase]] -deps = ["AbstractTrees"] -git-tree-sha1 = "484610e9b25a45f015f3e695c6d307e91883f2d3" -uuid = "28dd2a49-a57a-4bfb-84ca-1a49db9b96b8" -version = "1.4.1" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" -weakdeps = ["ConstructionBase", "InverseFunctions"] - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/docs/src/common_workflows/composition/Project.toml b/docs/src/common_workflows/composition/Project.toml deleted file mode 100644 index 8b6bea93..00000000 --- a/docs/src/common_workflows/composition/Project.toml +++ /dev/null @@ -1,9 +0,0 @@ -[deps] -EarlyStopping = "792122b4-ca99-40de-a6bc-6742525f08b6" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -Imbalance = "c709b415-507b-45b7-9a3d-1767c89fde68" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJBalancing = "45f359ea-796d-4f51-95a5-deb1a414c586" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/composition/README.md b/docs/src/common_workflows/composition/README.md index b68a07e7..ada5c5a4 100644 --- a/docs/src/common_workflows/composition/README.md +++ b/docs/src/common_workflows/composition/README.md @@ -1,15 +1,16 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/composition/notebook.ipynb b/docs/src/common_workflows/composition/notebook.ipynb index 306a24c6..e71c1259 100644 --- a/docs/src/common_workflows/composition/notebook.ipynb +++ b/docs/src/common_workflows/composition/notebook.ipynb @@ -30,14 +30,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/composition`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -46,7 +47,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -58,15 +59,27 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "import Random # To create imbalance\n", "import Imbalance # To solve the imbalance\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "import CategoricalArrays.unwrap\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -79,12 +92,21 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "(sepal_length = Float32[6.1, 7.3, 6.3, 4.8, 5.9, 7.1, 6.7, 5.4, 6.0, 6.9 … 5.0, 6.4, 5.7, 4.6, 5.5, 4.6, 5.6, 5.7, 6.0, 5.0], sepal_width = Float32[2.9, 2.9, 3.4, 3.4, 3.0, 3.0, 3.0, 3.9, 3.0, 3.1 … 3.3, 2.7, 2.5, 3.2, 2.4, 3.1, 2.8, 3.0, 2.9, 3.5], petal_length = Float32[4.7, 6.3, 5.6, 1.9, 5.1, 5.9, 5.0, 1.7, 4.8, 4.9 … 1.4, 5.3, 5.0, 1.4, 3.7, 1.5, 4.9, 4.2, 4.5, 1.6], petal_width = Float32[1.4, 1.8, 2.4, 0.2, 1.8, 2.1, 1.7, 0.4, 1.8, 1.5 … 0.2, 1.9, 2.0, 0.2, 1.0, 0.2, 2.0, 1.2, 1.5, 0.6])" + }, + "metadata": {}, + "execution_count": 3 + } + ], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": 3 @@ -92,7 +114,9 @@ { "cell_type": "markdown", "source": [ - "To simulate an imbalanced dataset, we will take a random sample:" + "The iris dataset has a target with uniformly distributed values, `\"versicolor\"`,\n", + "`\"setosa\"`, and `\"virginica\"`. To manufacture an unbalanced dataset, we'll combine the\n", + "first two into a single classs, `\"colosa\"`:" ], "metadata": {} }, @@ -102,17 +126,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "versicolor: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 28 (65.1%) \n", - "virginica: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 29 (67.4%) \n", - "setosa: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 43 (100.0%) \n" + "virginica: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 50 (50.0%) \n", + "colosa: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 100 (100.0%) \n" ] } ], "cell_type": "code", "source": [ - "Random.seed!(803429)\n", - "subset_indices = rand(1:size(X, 1), 100)\n", - "X, y = X[subset_indices, :], y[subset_indices]\n", + "y = coerce(\n", + " map(y) do species\n", + " species == \"virginica\" ? unwrap(species) : \"colosa\"\n", + " end,\n", + " Multiclass,\n", + ");\n", "Imbalance.checkbalance(y)" ], "metadata": {}, @@ -146,7 +172,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier" + "text/plain": "MLJFlux.NeuralNetworkClassifier" }, "metadata": {}, "execution_count": 5 @@ -173,7 +199,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 6 @@ -186,7 +212,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -214,7 +240,7 @@ ], "cell_type": "code", "source": [ - "oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=42)\n", + "oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=stable_rng())\n", "balanced_model = BalancedModel(model=clf, balancer1=oversampler)\n", "standarizer = Standardizer()" ], @@ -251,7 +277,7 @@ "source": [ "By this, any training data will be standardized then oversampled then passed to the\n", "model. Meanwhile, for inference, the standardizer will automatically use the training\n", - "set's mean and std and the oversampler will be transparent." + "set's mean and std and the oversampler will be play no role." ], "metadata": {} }, @@ -265,7 +291,7 @@ { "cell_type": "markdown", "source": [ - "It's indistinguishable from training a single model." + "The pipeline model can be evaluated like any other model:" ], "metadata": {} }, @@ -280,42 +306,26 @@ "[ Info: Training machine(:balanced_model_probabilistic, …).\n", "[ Info: Training machine(BorderlineSMOTE1(m = 5, …), …).\n", "[ Info: Training machine(:model, …).\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1, \"versicolor\" => 2).\n", - "\rProgress: 13%|███████▏ | ETA: 0:00:01\u001b[K\rProgress: 100%|█████████████████████████████████████████████████████| Time: 0:00:00\u001b[K\n", - "\rProgress: 67%|███████████████████████████████████▍ | ETA: 0:00:01\u001b[K\r\n", - " class: virginica\u001b[K\r\u001b[A[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1, \"versicolor\" => 2).\n", - "\rOptimising neural net: 4%[> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 6%[=> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 8%[=> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 10%[==> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 12%[==> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 14%[===> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 16%[===> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 18%[====> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 20%[====> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 22%[=====> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 24%[=====> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 25%[======> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 27%[======> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 29%[=======> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 31%[=======> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 33%[========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 35%[========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 37%[=========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 39%[=========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 41%[==========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 43%[==========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 45%[===========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 47%[===========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 49%[============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 51%[============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 53%[=============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 55%[=============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 57%[==============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 59%[==============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 61%[===============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 63%[===============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 65%[================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 67%[================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 69%[=================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 71%[=================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 73%[==================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 75%[==================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 76%[===================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 78%[===================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 80%[====================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 82%[====================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 84%[=====================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 86%[=====================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 88%[======================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 90%[======================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 92%[=======================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 94%[=======================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 96%[========================>] ETA: 0:00:00\u001b[K\rOptimising neural net: 98%[========================>] ETA: 0:00:00\u001b[K\rOptimising neural net: 100%[=========================] Time: 0:00:00\u001b[K\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 3, \"versicolor\" => 1).\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 3, \"versicolor\" => 1).\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"versicolor\" => 2).\n", - "┌ Warning: Cannot oversample a class with no borderline points. Skipping.\n", - "└ @ Imbalance ~/.julia/packages/Imbalance/knJL1/src/oversampling_methods/borderline_smote1/borderline_smote1.jl:67\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"versicolor\" => 2).\n", - "┌ Warning: Cannot oversample a class with no borderline points. Skipping.\n", - "└ @ Imbalance ~/.julia/packages/Imbalance/knJL1/src/oversampling_methods/borderline_smote1/borderline_smote1.jl:67\n", - "┌ Warning: Layer with Float32 parameters got Float64 input.\n", - "│ The input will be converted, but any earlier layers may be very slow.\n", - "│ layer = Dense(4 => 5, relu) # 25 parameters\n", - "│ summary(x) = \"4×8 Matrix{Float64}\"\n", - "└ @ Flux ~/.julia/packages/Flux/Wz6D4/src/layers/stateless.jl:60\n", - "\rEvaluating over 5 folds: 40%[==========> ] ETA: 0:00:10\u001b[K[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1, \"versicolor\" => 2).\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1, \"versicolor\" => 2).\n", - "\rEvaluating over 5 folds: 60%[===============> ] ETA: 0:00:05\u001b[K[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1).\n", - "┌ Warning: Cannot oversample a class with no borderline points. Skipping.\n", - "└ @ Imbalance ~/.julia/packages/Imbalance/knJL1/src/oversampling_methods/borderline_smote1/borderline_smote1.jl:67\n", - "\rProgress: 67%|███████████████████████████████████▍ | ETA: 0:00:00\u001b[K\r\n", - " class: virginica\u001b[K\r\u001b[A[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 1).\n", - "┌ Warning: Cannot oversample a class with no borderline points. Skipping.\n", - "└ @ Imbalance ~/.julia/packages/Imbalance/knJL1/src/oversampling_methods/borderline_smote1/borderline_smote1.jl:67\n", - "\rEvaluating over 5 folds: 80%[====================> ] ETA: 0:00:02\u001b[K[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 3, \"versicolor\" => 3).\n", - "[ Info: After filtering, the mapping from each class to number of borderline points is (\"virginica\" => 3, \"versicolor\" => 3).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 3, \"virginica\" => 3).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 3, \"virginica\" => 3).\n", + "\rOptimising neural net: 4%[> ] ETA: 0:05:31\u001b[K\rOptimising neural net: 100%[=========================] Time: 0:00:13\u001b[K\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 1, \"virginica\" => 4).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 1, \"virginica\" => 4).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 3, \"virginica\" => 4).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 3, \"virginica\" => 4).\n", + "\rEvaluating over 5 folds: 40%[==========> ] ETA: 0:00:11\u001b[K[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 2, \"virginica\" => 2).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 2, \"virginica\" => 2).\n", + "\rEvaluating over 5 folds: 60%[===============> ] ETA: 0:00:05\u001b[K[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 4, \"virginica\" => 3).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 4, \"virginica\" => 3).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 2, \"virginica\" => 2).\n", + "[ Info: After filtering, the mapping from each class to number of borderline points is (\"colosa\" => 2, \"virginica\" => 2).\n", "\rEvaluating over 5 folds: 100%[=========================] Time: 0:00:07\u001b[K\n" ] }, { "output_type": "execute_result", "data": { - "text/plain": "PerformanceEvaluation object with these fields:\n model, measure, operation,\n measurement, per_fold, per_observation,\n fitted_params_per_fold, report_per_fold,\n train_test_rows, resampling, repeats\nExtract:\n┌────────────┬──────────────┬─────────────┐\n│\u001b[22m measure \u001b[0m│\u001b[22m operation \u001b[0m│\u001b[22m measurement \u001b[0m│\n├────────────┼──────────────┼─────────────┤\n│ Accuracy() │ predict_mode │ 0.99 │\n└────────────┴──────────────┴─────────────┘\n┌────────────────────────────┬─────────┐\n│\u001b[22m per_fold \u001b[0m│\u001b[22m 1.96*SE \u001b[0m│\n├────────────────────────────┼─────────┤\n│ [1.0, 1.0, 0.95, 1.0, 1.0] │ 0.0219 │\n└────────────────────────────┴─────────┘\n" + "text/plain": "PerformanceEvaluation object with these fields:\n model, tag, measure, operation,\n measurement, uncertainty_radius_95, per_fold, per_observation,\n fitted_params_per_fold, report_per_fold,\n train_test_rows, resampling, repeats\nTag: ProbabilisticPipeline-776\nExtract:\n┌────────────┬──────────────┬─────────────┐\n│\u001b[30m measure \u001b[0m│\u001b[30m operation \u001b[0m│\u001b[30m measurement \u001b[0m│\n├────────────┼──────────────┼─────────────┤\n│ Accuracy() │ predict_mode │ 0.953 │\n└────────────┴──────────────┴─────────────┘\n┌─────────────────────────────────────┬─────────┐\n│\u001b[30m per_fold \u001b[0m│\u001b[30m 1.96*SE \u001b[0m│\n├─────────────────────────────────────┼─────────┤\n│ [0.933, 0.933, 0.967, 0.967, 0.967] │ 0.0179 │\n└─────────────────────────────────────┴─────────┘\n" }, "metadata": {}, "execution_count": 9 @@ -347,11 +357,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/composition/notebook.jl b/docs/src/common_workflows/composition/notebook.jl index b617a4b6..f5cfc642 100644 --- a/docs/src/common_workflows/composition/notebook.jl +++ b/docs/src/common_workflows/composition/notebook.jl @@ -8,31 +8,41 @@ # learning model from MLJFlux. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source import Random # To create imbalance import Imbalance # To solve the imbalance import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions +import CategoricalArrays.unwrap + +stable_rng() = StableRNGs.StableRNG(123) # ### Loading and Splitting the Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data + +# The iris dataset has a target with uniformly distributed values, `"versicolor"`, +# `"setosa"`, and `"virginica"`. To manufacture an unbalanced dataset, we'll combine the +# first two into a single classs, `"colosa"`: -# To simulate an imbalanced dataset, we will take a random sample: -Random.seed!(803429) -subset_indices = rand(1:size(X, 1), 100) -X, y = X[subset_indices, :], y[subset_indices] +y = coerce( + map(y) do species + species == "virginica" ? unwrap(species) : "colosa" + end, + Multiclass, +); Imbalance.checkbalance(y) @@ -52,27 +62,29 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) # First we wrap the oversampler with the neural network via the `BalancedModel` # construct. This comes from `MLJBalancing` And allows combining resampling methods with # MLJ models in a sequential pipeline. -oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=42) +oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=stable_rng()) balanced_model = BalancedModel(model=clf, balancer1=oversampler) standarizer = Standardizer() # Now let's compose the balanced model with a standardizer. + pipeline = standarizer |> balanced_model + # By this, any training data will be standardized then oversampled then passed to the # model. Meanwhile, for inference, the standardizer will automatically use the training -# set's mean and std and the oversampler will be transparent. +# set's mean and std and the oversampler will be play no role. # ### Training the Composed Model -# It's indistinguishable from training a single model. +# The pipeline model can be evaluated like any other model: mach = machine(pipeline, X, y) fit!(mach) diff --git a/docs/src/common_workflows/composition/notebook.md b/docs/src/common_workflows/composition/notebook.md index 949d5322..07bae1cb 100644 --- a/docs/src/common_workflows/composition/notebook.md +++ b/docs/src/common_workflows/composition/notebook.md @@ -11,34 +11,41 @@ In this workflow example, we see how MLJFlux enables composing MLJ models with M models. We will assume a class imbalance setting and wrap an oversampler with a deep learning model from MLJFlux. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example composition using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source import Random # To create imbalance import Imbalance # To solve the imbalance import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions +import CategoricalArrays.unwrap + +stable_rng() = StableRNGs.StableRNG(123) ```` ### Loading and Splitting the Data ````@example composition -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters -nothing #hide +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data ```` -To simulate an imbalanced dataset, we will take a random sample: +The iris dataset has a target with uniformly distributed values, `"versicolor"`, +`"setosa"`, and `"virginica"`. To manufacture an unbalanced dataset, we'll combine the +first two into a single classs, `"colosa"`: ````@example composition -Random.seed!(803429) -subset_indices = rand(1:size(X, 1), 100) -X, y = X[subset_indices, :], y[subset_indices] +y = coerce( + map(y) do species + species == "virginica" ? unwrap(species) : "colosa" + end, + Multiclass, +); Imbalance.checkbalance(y) ```` @@ -61,7 +68,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) ```` @@ -70,7 +77,7 @@ construct. This comes from `MLJBalancing` And allows combining resampling method MLJ models in a sequential pipeline. ````@example composition -oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=42) +oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=stable_rng()) balanced_model = BalancedModel(model=clf, balancer1=oversampler) standarizer = Standardizer() ```` @@ -83,11 +90,11 @@ pipeline = standarizer |> balanced_model By this, any training data will be standardized then oversampled then passed to the model. Meanwhile, for inference, the standardizer will automatically use the training -set's mean and std and the oversampler will be transparent. +set's mean and std and the oversampler will be play no role. ### Training the Composed Model -It's indistinguishable from training a single model. +The pipeline model can be evaluated like any other model: ````@example composition mach = machine(pipeline, X, y) diff --git a/docs/src/common_workflows/composition/notebook.unexecuted.ipynb b/docs/src/common_workflows/composition/notebook.unexecuted.ipynb index ef75b9ab..3cac4d35 100644 --- a/docs/src/common_workflows/composition/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/composition/notebook.unexecuted.ipynb @@ -29,7 +29,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -38,7 +39,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -55,10 +56,13 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "import Random # To create imbalance\n", "import Imbalance # To solve the imbalance\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "import CategoricalArrays.unwrap\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -74,9 +78,9 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": null @@ -84,7 +88,9 @@ { "cell_type": "markdown", "source": [ - "To simulate an imbalanced dataset, we will take a random sample:" + "The iris dataset has a target with uniformly distributed values, `\"versicolor\"`,\n", + "`\"setosa\"`, and `\"virginica\"`. To manufacture an unbalanced dataset, we'll combine the\n", + "first two into a single classs, `\"colosa\"`:" ], "metadata": {} }, @@ -92,9 +98,12 @@ "outputs": [], "cell_type": "code", "source": [ - "Random.seed!(803429)\n", - "subset_indices = rand(1:size(X, 1), 100)\n", - "X, y = X[subset_indices, :], y[subset_indices]\n", + "y = coerce(\n", + " map(y) do species\n", + " species == \"virginica\" ? unwrap(species) : \"colosa\"\n", + " end,\n", + " Multiclass,\n", + ");\n", "Imbalance.checkbalance(y)" ], "metadata": {}, @@ -142,7 +151,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -161,7 +170,7 @@ "outputs": [], "cell_type": "code", "source": [ - "oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=42)\n", + "oversampler = BorderlineSMOTE1(k=5, ratios=1.0, rng=stable_rng())\n", "balanced_model = BalancedModel(model=clf, balancer1=oversampler)\n", "standarizer = Standardizer()" ], @@ -189,7 +198,7 @@ "source": [ "By this, any training data will be standardized then oversampled then passed to the\n", "model. Meanwhile, for inference, the standardizer will automatically use the training\n", - "set's mean and std and the oversampler will be transparent." + "set's mean and std and the oversampler will be play no role." ], "metadata": {} }, @@ -203,7 +212,7 @@ { "cell_type": "markdown", "source": [ - "It's indistinguishable from training a single model." + "The pipeline model can be evaluated like any other model:" ], "metadata": {} }, @@ -235,11 +244,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/early_stopping/Manifest.toml b/docs/src/common_workflows/early_stopping/Manifest.toml deleted file mode 100644 index 7de851af..00000000 --- a/docs/src/common_workflows/early_stopping/Manifest.toml +++ /dev/null @@ -1,1985 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "540de0ef73bde5cd1000ae716c1fee2e0f3a0bf1" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.25.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.9+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.5" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.5+0" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.7" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.3" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "6e55c6841ce3411ccb3457ee52fc48cb698d6fb0" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.2.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.4" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.7+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.43.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/common_workflows/early_stopping/Project.toml b/docs/src/common_workflows/early_stopping/Project.toml deleted file mode 100644 index b95d41bd..00000000 --- a/docs/src/common_workflows/early_stopping/Project.toml +++ /dev/null @@ -1,7 +0,0 @@ -[deps] -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/early_stopping/README.md b/docs/src/common_workflows/early_stopping/README.md index b68a07e7..ada5c5a4 100644 --- a/docs/src/common_workflows/early_stopping/README.md +++ b/docs/src/common_workflows/early_stopping/README.md @@ -1,15 +1,16 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/early_stopping/notebook.ipynb b/docs/src/common_workflows/early_stopping/notebook.ipynb index 9f136402..5388c011 100644 --- a/docs/src/common_workflows/early_stopping/notebook.ipynb +++ b/docs/src/common_workflows/early_stopping/notebook.ipynb @@ -29,14 +29,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/early_stopping`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -45,7 +46,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -57,14 +58,25 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using Plots # To visualize training\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -77,12 +89,21 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "(sepal_length = Float32[6.1, 7.3, 6.3, 4.8, 5.9, 7.1, 6.7, 5.4, 6.0, 6.9 … 5.0, 6.4, 5.7, 4.6, 5.5, 4.6, 5.6, 5.7, 6.0, 5.0], sepal_width = Float32[2.9, 2.9, 3.4, 3.4, 3.0, 3.0, 3.0, 3.9, 3.0, 3.1 … 3.3, 2.7, 2.5, 3.2, 2.4, 3.1, 2.8, 3.0, 2.9, 3.5], petal_length = Float32[4.7, 6.3, 5.6, 1.9, 5.1, 5.9, 5.0, 1.7, 4.8, 4.9 … 1.4, 5.3, 5.0, 1.4, 3.7, 1.5, 4.9, 4.2, 4.5, 1.6], petal_width = Float32[1.4, 1.8, 2.4, 0.2, 1.8, 2.1, 1.7, 0.4, 1.8, 1.5 … 0.2, 1.9, 2.0, 0.2, 1.0, 0.2, 2.0, 1.2, 1.5, 0.6])" + }, + "metadata": {}, + "execution_count": 3 + } + ], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": 3 @@ -108,7 +129,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 50, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 4 @@ -123,7 +144,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -148,7 +169,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "5-element Vector{Any}:\n Step(1)\n NumberLimit(100)\n Patience(5)\n NumberSinceBest(9)\n TimeLimit(Dates.Millisecond(1800000))" + "text/plain": "5-element Vector{Any}:\n IterationControl.Step(1)\n EarlyStopping.NumberLimit(100)\n EarlyStopping.Patience(5)\n EarlyStopping.NumberSinceBest(9)\n EarlyStopping.TimeLimit(Dates.Millisecond(1800000))" }, "metadata": {}, "execution_count": 5 @@ -179,7 +200,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "1-element Vector{WithLossDo{Main.var\"##267\".var\"#1#2\"}}:\n WithLossDo{Main.var\"##267\".var\"#1#2\"}(Main.var\"##267\".var\"#1#2\"(), false, nothing)" + "text/plain": "1-element Vector{IterationControl.WithLossDo{Main.var\"##425\".var\"#3#4\"}}:\n IterationControl.WithLossDo{Main.var\"##425\".var\"#3#4\"}(Main.var\"##425\".var\"#3#4\"(), false, nothing)" }, "metadata": {}, "execution_count": 6 @@ -248,9 +269,9 @@ "output_type": "stream", "text": [ "[ Info: Training machine(ProbabilisticIteratedModel(model = NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …), …), …).\n", - "[ Info: final loss: 0.05287897645527522\n", - "[ Info: final training loss: 0.045833383\n", - "[ Info: Stop triggered by NumberLimit(100) stopping criterion. \n", + "[ Info: final loss: 0.024808875413973978\n", + "[ Info: final training loss: 0.07397421\n", + "[ Info: Stop triggered by EarlyStopping.NumberLimit(100) stopping criterion. \n", "[ Info: Total of 100 iterations. \n" ] } @@ -260,7 +281,7 @@ "mach = machine(iterated_model, X, y)\n", "fit!(mach)\n", "# We can get the training losses like so\n", - "training_losses = report(mach)[:model_report].training_losses;" + "training_losses = report(mach).model_report.training_losses;" ], "metadata": {}, "execution_count": 8 @@ -285,106 +306,59 @@ "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=2}", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAIAAADZR5NjAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdaXxTVd4H8P+92dN03+lCFyhraSsgUHYEZFEQARFkVAZBGUFkHMVRdFweHefxAWVcxn0AFQRRdtlRKyAIhZZSthZKSwtd6Jo0aZKbe58XN1wrFEghTdrk9311e3Jyc9JPPfw859xzGEEQCAAAAACch3V3AwAAAAA8DQIWAAAAgJMhYAEAAAA4GQIWAAAAgJMhYAEAAAA4GQIWAAAAgJMhYAEAAAA4GQIWAAAAgJMhYAEAAAA4GQIWAAAAgJO1uoC1cOFCq9XqSE2bzdbSjYE2QRAEnPgEInQLIOJ53t1NgNbCXd1CqwtYn332mV6vd6Sm0Whs6cZAm2CxWDiOc3croFVAtwCihoYGZCwQuatbaHUBCwAAAKCtQ8ACAAAAcDIELAAAAAAnQ8ACAAAAcDIELAAAAAAnQ8ACAAAAcDIELAAAAAAnQ8ACAAAAcDKPCli7Lwoxq7jdF7GpNwAAALiTRwWsg+VCcb2wuwS79wIAAIA7yd3dAGfyUxIR1Tl0kiEAAIDdjh07vvvuO3e3AloEx3FyuZyItFrt4sWLWdZFQ0ueFbAURER1Fne3AwAA2pRdu3ZVVlaOHDnS3Q2BFjR37tw333xTo9G45uM8K2ApiYhqMYIFAADN1KdPn9mzZ7u7FdCCnn76aVd+nEetwfJXMkRUZ8EidwAAAHAnjwpY9ilCjGABAACAW3lgwKrFGiwAAABwK88KWJgiBAAAgFbAowKWP7ZpAAAAgFbAowKWWkZKlsw2Mtvc3RQAAADwYh61TQMR+SnpcgPVWijMRftcAAAAtAr5+fnffPPNteUvvvgiwzA3eOPSpUsbGhoWLlx4vQqzZ8++995777333ltu244dOziOGzNmzC3foc3xqBEsIvJTMERUZ8UyLAAA8C48z3Mcx3FcQUHB66+/zl1x0zcmJyenpaXdoMLgwYPj4uJup21btmxZv3797dyhzfG0ESz7Miw8SAgAAF4mKSnplVdeIaJ9+/Z9++230vX58+fPnj175MiRJ598sq6ubs+ePaWlpQkJCePGjZPJZEQUERFhs9mIqLy8PDs7u3v37t99951Op5syZYq473lcXFxAQAARnT59Wq/Xa7Xabdu2JSQkjB8/XhwbEwRh06ZNZ8+eHT58uMlkCgoK6tChw00bbDKZNm3aVFpa2q9fv969e4uFhYWFW7ZsaWhoSExMHD16tFKprKqqWr9+fWVlZUxMzOjRo/39/Vvm9+dknhawsJk7AAA4i9lGJcZWNyWiYCnG50ZTfo29/fbbBQUFnTt3TkpKMpvN4lkxYWFhH3300WeffbZlyxYiWrlypclkWrx4cU5OzowZM5KSkoYOHbp+/frVq1dv3bqViN54442HHnrooYce2rhx4/Lly2NjY/v167do0aJDhw698cYbRPTYY48dP3580qRJzzzzTGFh4dy5c+fNm3fjhtXX1/fr169jx45paWmTJ09+6qmn/vrXv+bn5w8YMGDWrFnBwcFr167t3r17REREz54977333sTExF9++SU4OHjEiBG39/tzEY8LWAqGSKizCESO/vEBAAA06YE9to2FvLtb0YSvh8qmJTq6yKdbt24rV64Ur9977z3xYsGCBYmJiadOnercuXPjytXV1WvWrAkJCVmwYEFQUFBlZWVwcHDjCuJglUwmGz58+NSpU994440zZ8589913RUVFfn5+8+fPT0hIcKRVn3zySXBwsHjG9vjx4/v27fvYY4/99ttvaWlpr7/+ulQtJyeH5/l3333XZYc0O4unBSzs1AAAAM4yMII5WcPYWlnE8lNSJ/9mDCIMGDBAut6xY8drr712+fJlrVZbWVlZWFh4VcBKSEgICQkhIp1OFxISUlZWdlXA6tWrlzixGBcXV1ZWRkS5ubndunXz8/MjIqVSKU323Vh2dvawYcPE6+TkZJ1Od+bMmWHDhr300kvdu3cfP378lClTevTo0alTp9jY2Li4uPvuu2/ixImDBw92/Iu7l6cFLPsUIdZgAQDAbftbMvu35DY2cHIttVotXtTX10+aNGn37t1iBkpOTr52CbxCoZCuGYYRhKtnSKUK0qtardZoNEoVGl/fgFKptFp/Hw6xWq0KhSIiIuL06dN79+5dt27doEGD1q9fP2TIkIyMjCNHjmzcuHHq1KkvvfTSnDlzHPzi7tXm/26uYj+OEAELAADgj8rLyxmGSUlJIaLjx4+fOnXKKbft3bt3QUHB4cOHiSgvLy8jI8ORd/Xr12/jxo1ixtq9e7dMJktKSjIajXK5fMiQIUuXLh07duzhw4dNJpMgCD179nz11VfnzZt38OBB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", + "image/png": "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/c8991xubq7H47l06ZLVam3cuLEoik888cS9995LRM8///x33333yCOPfPfdd2+++eb27dtNJtPChQv37dvXvXv31q1bT5o06e9//3tNxmw9+uij+/bte+CBBz777LP33ntv06ZNoij27du3b9++nTt3Pnfu3M8//zx27NiJEyc6nc4hQ4bk5eWtWbMGAet6mURySOSSKQIBCwAAAq3gywUlu9YHuxYVECwR9ecuYWIFv8EnTpw4e/bsc+fOpaamLl68uFevXs2bN2/evPnw4cNL3ysIn3zyyd///vcK7zxz5sx33nlHzUlOp9O3bPqqVavUg6FDhw4YMOC555674447kpOTx44dO3DgQCLKzMxUC1y6dOntt9/+5ZdfGjVq9Mc//rFHjx6ffvrpo48+SkSdOnVatGgREcXGxi5fvrzagHXkyJEvvvjizJkzcXFxTz31VNu2bVeuXDlo0KBffvnl559/joyM9JX8+eefV6xY0bVr15p+B+tECAcss+5KwNIHuyoAABB2TK1uki6fCXYtKqBv0LTCdEVEKSkpAwYM+Oyzz55//vnFixc//fTTRHTu3LmpU6cePnxYluXi4uIhQ4ZU+F5FUQ4dOtS7d2/1Ze/evdWApW4R/fnnnyuKIknShQsXZFmubCH4I0eONGzY0NcL2a9fv/T0dPXYN6Y+NTU1Ozu72i8zIyOjffv26rqmgiD06dMnPT39nnvuuf/++1NTU4cNGzZixIgxY8YIgjBlypR+/fr1799/+PDh48eP9+/cDKIQDlgmkRFxl8yJqt+4GwAA4JpY0gZY0gYEuxbX7KGHHvrrX/86cODAkydPqktSzZgx46abbvrqq68EQZg3b15l2/kJgmAwGNxut/rSd7B69eoVK1bs3LkzOjr6woULDRs2VBSlsoBlMpl8b1Rv4ttq2vcWxmr0W7uyW3388cezZs1atWrVnDlztm3b9vbbbz/77LMTJ05cs2bNokWLli1btn69JtodQ7h3DePcAQAAyrjrrrvy8/OnTJkybty4iIgIIrp48WK7du0EQXC73b79lSvUu3fvZcuWERHn3Lcb9MWLF1NTU9V12//v//7PVzg6OrqwsLDMHTp06GC327ds2UJEdrv9m2++KbNWe8117dr1+PHjahzMz89fu3Zt37593W63y+Vq0qTJlClTXnjhhQMHDhBRUVFRYmLi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", "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "" ], "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, "metadata": {}, @@ -415,11 +389,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/early_stopping/notebook.jl b/docs/src/common_workflows/early_stopping/notebook.jl index adcf39f7..f5f9e953 100644 --- a/docs/src/common_workflows/early_stopping/notebook.jl +++ b/docs/src/common_workflows/early_stopping/notebook.jl @@ -7,26 +7,27 @@ # when training MLJFlux models. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* - +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using Plots # To visualize training import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions -# ### Loading and Splitting the Data +stable_rng() = StableRNGs.StableRNG(123) -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters +# ### Loading and Splitting the Data +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data # ### Instantiating the model Now let's construct our model. This follows a similar setup # to the one followed in the [Quick Start](../../index.md#Quick-Start). @@ -38,7 +39,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) # ### Wrapping it in an IteratedModel @@ -79,7 +80,7 @@ iterated_model = IteratedModel( mach = machine(iterated_model, X, y) fit!(mach) ## We can get the training losses like so -training_losses = report(mach)[:model_report].training_losses; +training_losses = report(mach).model_report.training_losses; # ### Results diff --git a/docs/src/common_workflows/early_stopping/notebook.md b/docs/src/common_workflows/early_stopping/notebook.md index 076b7007..eed6ff07 100644 --- a/docs/src/common_workflows/early_stopping/notebook.md +++ b/docs/src/common_workflows/early_stopping/notebook.md @@ -10,25 +10,26 @@ This demonstration is available as a Jupyter notebook or julia script In this workflow example, we learn how MLJFlux enables us to easily use early stopping when training MLJFlux models. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example early_stopping using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using Plots # To visualize training import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) ```` ### Loading and Splitting the Data ````@example early_stopping -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters -nothing #hide +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data ```` ### Instantiating the model Now let's construct our model. This follows a similar setup @@ -42,7 +43,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) ```` @@ -95,7 +96,7 @@ automatically handled mach = machine(iterated_model, X, y) fit!(mach) # We can get the training losses like so -training_losses = report(mach)[:model_report].training_losses; +training_losses = report(mach).model_report.training_losses; nothing #hide ```` diff --git a/docs/src/common_workflows/early_stopping/notebook.unexecuted.ipynb b/docs/src/common_workflows/early_stopping/notebook.unexecuted.ipynb index 4441ab52..d457ac1c 100644 --- a/docs/src/common_workflows/early_stopping/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/early_stopping/notebook.unexecuted.ipynb @@ -28,7 +28,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -37,7 +38,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -54,9 +55,11 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using Plots # To visualize training\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -72,9 +75,9 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": null @@ -98,7 +101,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -205,7 +208,7 @@ "mach = machine(iterated_model, X, y)\n", "fit!(mach)\n", "# We can get the training losses like so\n", - "training_losses = report(mach)[:model_report].training_losses;" + "training_losses = report(mach).model_report.training_losses;" ], "metadata": {}, "execution_count": null @@ -250,11 +253,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/entity_embeddings/Manifest.toml b/docs/src/common_workflows/entity_embeddings/Manifest.toml deleted file mode 100644 index bba70ae3..00000000 --- a/docs/src/common_workflows/entity_embeddings/Manifest.toml +++ /dev/null @@ -1,2146 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.11.1" -manifest_format = "2.0" -project_hash = "e3bdab57cceee403b38faa80687d7ee87d9f1ccf" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "678eb18590a8bc6674363da4d5faa4ac09c40a18" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.5.0" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] -git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.38" - - [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsDatesExt = "Dates" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - AccessorsTestExt = "Test" - AccessorsUnitfulExt = "Unitful" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "d80af0733c99ea80575f612813fa6aa71022d33a" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.1.0" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Accessors", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires"] -git-tree-sha1 = "e2144b631226d9eeab2d746ca8880b7ccff504ae" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.4.3" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTablesExt = "Tables" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.9" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+2" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "deddd8725e5e1cc49ee205a1964256043720a6c3" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.15" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.2+1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "be227d253d132a6d57f9ccf5f67c0fb6488afd87" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.71.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.25.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.6" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools"] -git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.1" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.16.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "ea32b83ca4fefa1768dc84e504cc0a94fb1ab8d1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.2" - -[[deps.ConstructionBase]] -git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.8" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseLinearAlgebraExt = "LinearAlgebra" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.7.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" - -[[deps.Dbus_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fc173b380865f70627d7dd1190dc2fce6cc105af" -uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" -version = "1.14.10+0" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.12" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" -version = "1.11.0" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "d7477ecdafb813ddee2ae727afa94e9dcb5f3fb0" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.112" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "53ebe7511fa11d33bec688a9178fac4e49eeee00" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.2" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "0a2e5873e9a5f54abb06418d57a8df689336a660" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.2" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "d78c565b6296e161193eb0f053bbcb3f1a82091d" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.2.2" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "62ca0547a14c57e98154423419d8a342dca75ca9" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.4" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates"] -git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.22" -weakdeps = ["Mmap", "Test"] - - [deps.FilePathsBase.extensions] - FilePathsBaseMmapExt = "Mmap" - FilePathsBaseTestExt = "Test" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.13.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLDataDevices", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "Setfield", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "37fa32a50c69c10c6ea1465d3054d98c75bd7777" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.22" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxEnzymeExt = "Enzyme" - FluxMPIExt = "MPI" - FluxMPINCCLExt = ["CUDA", "MPI", "NCCL"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - NCCL = "3fe64909-d7a1-4096-9b7d-7a0f12cf0f6b" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "64d8e93700c7a3f28f717d265382d52fac9fa1c1" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.12" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] -git-tree-sha1 = "532f9126ad901533af1d4f5c198867227a7bb077" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.4.0+1" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "62ee71528cca49be797076a76bdc654a170a523e" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.3.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ee28ddcd5517d54e417182fec3886e7412d3926f" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.8" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "f31929b9e67066bee48eec8b03c0df47d31a74b3" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.8+0" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] -git-tree-sha1 = "401e4f3f30f43af2c8478fc008da50096ea5240f" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "8.3.1+0" - -[[deps.HypergeometricFunctions]] -deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.24" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.2" - - [deps.InlineStrings.extensions] - ArrowTypesExt = "ArrowTypes" - ParsersExt = "Parsers" - - [deps.InlineStrings.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" - -[[deps.InverseFunctions]] -git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.17" -weakdeps = ["Dates", "Test"] - - [deps.InverseFunctions.extensions] - InverseFunctionsDatesExt = "Dates" - InverseFunctionsTestExt = "Test" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"] -git-tree-sha1 = "783c1be5213a09609b23237a0c9e5dfd258ae6f2" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.5.7" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.6.1" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.4+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "04e52f596d0871fa3890170fa79cb15e481e4cd8" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.28" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - LinearAlgebraExt = "LinearAlgebra" - SparseArraysExt = "SparseArrays" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "36bdbc52f13a7d1dcb0f3cd694e01677a515655b" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "4.0.0+0" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "d422dfd9707bec6617335dc2ea3c5172a87d5908" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.1.3" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "05a8bd5a42309a9ec82f700876903abce1017dd3" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.34+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "78211fb6cbc872f77cad3fc0b6cf647d923f4929" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "18.1.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+1" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.4.0" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "ce5f5621cac23a86011836badfedf664a612cee4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.5" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SparseArraysExt = "SparseArrays" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.6.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -version = "1.11.0" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.7.2+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c6ce1e19f3aec9b59186bdf06cdf3c4fc5f5f3e6" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.50.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "b404131d06f7886402758c9ce2214b636eb4d54a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.7.0+0" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -version = "1.11.0" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.1.0" - -[[deps.MLDataDevices]] -deps = ["Adapt", "Compat", "Functors", "LinearAlgebra", "Preferences", "Random"] -git-tree-sha1 = "3207c2e66164e6366440ad3f0243a8d67abb4a47" -uuid = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40" -version = "1.4.1" - - [deps.MLDataDevices.extensions] - MLDataDevicesAMDGPUExt = "AMDGPU" - MLDataDevicesCUDAExt = "CUDA" - MLDataDevicesChainRulesCoreExt = "ChainRulesCore" - MLDataDevicesFillArraysExt = "FillArrays" - MLDataDevicesGPUArraysExt = "GPUArrays" - MLDataDevicesMLUtilsExt = "MLUtils" - MLDataDevicesMetalExt = ["GPUArrays", "Metal"] - MLDataDevicesReactantExt = "Reactant" - MLDataDevicesRecursiveArrayToolsExt = "RecursiveArrayTools" - MLDataDevicesReverseDiffExt = "ReverseDiff" - MLDataDevicesSparseArraysExt = "SparseArrays" - MLDataDevicesTrackerExt = "Tracker" - MLDataDevicesZygoteExt = "Zygote" - MLDataDevicescuDNNExt = ["CUDA", "cuDNN"] - MLDataDevicesoneAPIExt = ["GPUArrays", "oneAPI"] - - [deps.MLDataDevices.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" - GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" - MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "521eec7a22417d54fdc66f5dc0b7dc9628931c54" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.7" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "6f45e12073bc2f2e73ed0473391db38c31e879c9" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.7.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "98fd05da1bc1527f7849efb645ef1921ccf97c9a" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.6.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "ad16cfd261e28204847f509d1221a581286448ae" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.3" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "ceaff6618408d0e412619321ae43b33b40c1a733" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.11.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "c1b1f72379d15079d2c97937d9c1ed38f9ab4679" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.4" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "38aab60b1274ce7d6da784808e3be69e585dbbf6" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.8" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.6+0" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "aef476e4958303f5ea9e1deb81a1ba2f510d4e11" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.4" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["Accessors", "BangBang", "InitialValues"] -git-tree-sha1 = "44d32db644e84c75dab479f1bc15ee76a1a3618f" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.2.0" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "2c140d60d7cb82badf06d8783800d0bcd1a7daa2" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.8.1" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "da09a1e112fd75f9af2a5229323f01b56ec96a4c" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.24" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - NNlibFFTWExt = "FFTW" - NNlibForwardDiffExt = "ForwardDiff" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.15+1" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.3+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Pango_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801" -uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.54.1+0" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" -weakdeps = ["REPL"] - - [deps.Pkg.extensions] - REPLExt = "REPL" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "6e55c6841ce3411ccb3457ee52fc48cb698d6fb0" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.2.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] -git-tree-sha1 = "650a022b2ce86c7dcfbdecf00f78afeeb20e5655" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.2" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.4.0" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "8f6bc219586aef8baf0ff9a5fe16ee9c70cb65e4" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.2" - -[[deps.PtrArrays]] -git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.1" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "492601870742dcd38f233b23c3ec629628c1d724" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.7.1+1" - -[[deps.Qt6Declarative_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] -git-tree-sha1 = "e5dd466bf2569fe08c91a2cc29c1003f4797ac3b" -uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" -version = "6.7.1+2" - -[[deps.Qt6ShaderTools_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] -git-tree-sha1 = "1a180aeced866700d4bebc3120ea1451201f16bc" -uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" -version = "6.7.1+1" - -[[deps.Qt6Wayland_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] -git-tree-sha1 = "729927532d48cf79f49070341e1d918a65aba6b0" -uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" -version = "6.7.1+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.11.1" - - [deps.QuadGK.extensions] - QuadGKEnzymeExt = "Enzyme" - - [deps.QuadGK.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" -version = "1.11.0" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.8.0" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.5.1+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "305becf8af67eae1dbc912ee9097f00aeeabb8d5" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.6" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.2.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "777657803913ffc7e8cc20f0fd04b634f871af8f" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.8" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "c1d4318fa41056b839dfbb3ee841f011fa6e8518" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.7" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "542d979f6e756f13f862aa00b224f04f9e445f11" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.4.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.2" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.4.0" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.StyledStrings]] -uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" -version = "1.11.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "36b40607bf2bf856828690e097e1c799623b0602" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.3.0+2024b" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.12.0" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -version = "1.11.0" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "8323074bc977aa85cf5ad71099a83ac75b0ac107" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.18.1" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.3" - -[[deps.Transducers]] -deps = ["Accessors", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "SplittablesBase", "Tables"] -git-tree-sha1 = "7deeab4ff96b85c5f72c824cae53a1398da3d1cb" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.84" - - [deps.Transducers.extensions] - TransducersAdaptExt = "Adapt" - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.21.0" -weakdeps = ["ConstructionBase", "InverseFunctions"] - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "975c354fcd5f7e1ddcc1f1a23e6e091d99e99bc8" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.4" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "2d17fabcd17e67d7625ce9c531fb9f40b7c42ce4" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.2.1" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "1165b0443d0eca63ac1e32b8c0eb69ed2f4f8127" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.3+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.41+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "15e637a697345f6743674f1322beefbc5dcd5cfc" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.6.3+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.17.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+1" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "f816633be6dc5c0ed9ffedda157ecfda0b3b6a69" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.72" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.2+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" - -[[deps.libdecor_jll]] -deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] -git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" -uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" -version = "0.2.2+0" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.3+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.44+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+2" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/common_workflows/entity_embeddings/Project.toml b/docs/src/common_workflows/entity_embeddings/Project.toml deleted file mode 100644 index 9c6674ba..00000000 --- a/docs/src/common_workflows/entity_embeddings/Project.toml +++ /dev/null @@ -1,13 +0,0 @@ -[deps] -CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" -Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" diff --git a/docs/src/common_workflows/entity_embeddings/README.md b/docs/src/common_workflows/entity_embeddings/README.md new file mode 100644 index 00000000..ada5c5a4 --- /dev/null +++ b/docs/src/common_workflows/entity_embeddings/README.md @@ -0,0 +1,16 @@ +# Contents + +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | + + +# Important + +Scripts or notebooks in this folder cannot be reliably executed without the accompanying +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/entity_embeddings/notebook.ipynb b/docs/src/common_workflows/entity_embeddings/notebook.ipynb index 34b86b64..24b95e20 100644 --- a/docs/src/common_workflows/entity_embeddings/notebook.ipynb +++ b/docs/src/common_workflows/entity_embeddings/notebook.ipynb @@ -18,16 +18,22 @@ { "cell_type": "markdown", "source": [ - "Entity embedding is newer deep learning approach for categorical encoding introduced in 2016 by Cheng Guo and Felix Berkhahn.\n", - "It employs a set of embedding layers to map each categorical feature into a dense continuous vector in a similar fashion to how they are employed in NLP architectures." + "Entity embedding is newer deep learning approach for categorical encoding introduced in\n", + "2016 by Cheng Guo and Felix Berkhahn. It employs a set of embedding layers to map each\n", + "categorical feature into a dense continuous vector in a similar fashion to how they are\n", + "employed in NLP architectures." ], "metadata": {} }, { "cell_type": "markdown", "source": [ - "In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the `MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data (i.e., containing categorical features) because they have a built-in entity embedding layer.\n", - "Moreover, they now offer a transform which encode the categorical features with the learnt embeddings to be used by an upstream machine learning model." + "In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the\n", + "`MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data\n", + "(i.e., containing categorical features) because they have a built-in entity embedding\n", + "layer. Moreover, they offer a `transform` method which encodes the categorical features\n", + "with the learned embeddings. Such embeddings can then be used as features in downstream\n", + "machine learning models." ], "metadata": {} }, @@ -44,14 +50,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/Documents/GitHub/MLJFlux.jl/docs/src/common_workflows/entity_embeddings`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -60,7 +67,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -72,7 +79,16 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ\n", @@ -84,7 +100,10 @@ "using Tables\n", "using ProgressMeter\n", "using Plots\n", - "using ScientificTypes" + "using ScientificTypes\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(246)" ], "metadata": {}, "execution_count": 2 @@ -100,7 +119,7 @@ "outputs": [], "cell_type": "code", "source": [ - "X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=40)\n", + "X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=stable_rng())\n", "X = DataFrame(X);" ], "metadata": {}, @@ -119,2098 +138,1053 @@ "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=2}", - "image/png": "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", + "image/png": "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", "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "" ], "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, "metadata": {}, @@ -2239,7 +1213,8 @@ { "cell_type": "markdown", "source": [ - "Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a meaningful way:" + "Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a\n", + "meaningful way:" ], "metadata": {} }, @@ -2256,9 +1231,9 @@ ], "cell_type": "code", "source": [ - "Random.seed!(40)\n", - "generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(['A', 'B']) : rand(['C', 'D'])\n", - "generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(['X', 'Y']) : rand(['Z'])" + "rng = stable_rng()\n", + "generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(rng, ['A', 'B']) : rand(rng, ['C', 'D'])\n", + "generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(rng, ['X', 'Y']) : rand(rng, ['Z'])" ], "metadata": {}, "execution_count": 5 @@ -2274,8 +1249,8 @@ "outputs": [], "cell_type": "code", "source": [ - "X[!, :C1] = [generate_C1(x) for x in X[!, :x1]]\n", - "X[!, :C2] = [generate_C2(x) for x in X[!, :x2]]\n", + "X[!, :C1] = [generate_C1(x) for x in X[!, :x1]];\n", + "X[!, :C2] = [generate_C2(x) for x in X[!, :x2]];\n", "X[!, :R3] = rand(1000); # A random continuous column." ], "metadata": {}, @@ -2300,8 +1275,9 @@ { "cell_type": "markdown", "source": [ - "It's also necessary to cast the categorical columns to the correct scientific type as the embedding layer\n", - "will have an effect on the model if and only if categorical columns exist." + "It's also necessary to cast the categorical columns to the correct scientific type as\n", + "the embedding layer will have an effect on the model if and only if categorical columns\n", + "exist." ], "metadata": {} }, @@ -2309,7 +1285,7 @@ "outputs": [], "cell_type": "code", "source": [ - "X = coerce(X, :C1 =>Multiclass, :C2 =>Multiclass);" + "X = coerce(X, :C1=>Multiclass, :C2=>Multiclass);" ], "metadata": {}, "execution_count": 8 @@ -2326,12 +1302,12 @@ "cell_type": "code", "source": [ "(X_train, X_test), (y_train, y_test) = partition(\n", - "\t(X, y),\n", - "\t0.8,\n", - "\tmulti = true,\n", - "\tshuffle = true,\n", - "\tstratify = y,\n", - "\trng = Random.Xoshiro(41)\n", + " (X, y),\n", + " 0.8,\n", + " multi = true,\n", + " shuffle = true,\n", + " stratify = y,\n", + " rng = stable_rng(),\n", ");" ], "metadata": {}, @@ -2351,12 +1327,7 @@ "output_type": "stream", "text": [ "[ Info: For silent loading, specify `verbosity=0`. \n", - "import MLJFlux ✔\n", - "┌ Info: The CUDA functionality is being called but\n", - "│ `CUDA.jl` must be loaded to access it.\n", - "└ Add `using CUDA` or `import CUDA` to your code. Alternatively, configure a different GPU backend by calling `Flux.gpu_backend!`.\n", - "┌ Warning: `acceleration isa CUDALibs` but no CUDA device (GPU) currently live. \n", - "└ @ MLJFlux ~/.julia/packages/MLJFlux/AO4Dh/src/types.jl:62\n" + "import MLJFlux ✔\n" ] } ], @@ -2370,7 +1341,7 @@ " optimiser = Optimisers.Adam(0.01),\n", " batch_size = 2,\n", " epochs = 100,\n", - " acceleration = CUDALibs(),\n", + " acceleration = CPU1(), # use `CUDALibs()` on a GPU\n", " embedding_dims = Dict(:C1 => 2, :C2 => 2,),\n", ");" ], @@ -2380,8 +1351,8 @@ { "cell_type": "markdown", "source": [ - "Notice that we specified to embed each of the columns to 2D columns. By default, it uses `min(numfeats - 1, 10)`\n", - "for the new dimensionality of any categorical feature." + "Notice that we specified to embed each of the columns to 2D columns. By default, it uses\n", + "`min(numfeats - 1, 10)` for the new dimensionality of any categorical feature." ], "metadata": {} }, @@ -2394,21 +1365,10 @@ }, { "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "┌ Info: The CUDA functionality is being called but\n", - "│ `CUDA.jl` must be loaded to access it.\n", - "└ Add `using CUDA` or `import CUDA` to your code. Alternatively, configure a different GPU backend by calling `Flux.gpu_backend!`.\n", - "┌ Warning: `acceleration isa CUDALibs` but no CUDA device (GPU) currently live. \n", - "└ @ MLJBase ~/.julia/packages/MLJBase/7nGJF/src/machines.jl:654\n" - ] - }, { "output_type": "execute_result", "data": { - "text/plain": "trained Machine; caches model-specific representations of data\n model: NeuralNetworkBinaryClassifier(builder = Short(n_hidden = 5, …), …)\n args: \n 1:\tSource @941 ⏎ Table{Union{AbstractVector{Continuous}, AbstractVector{Multiclass{4}}, AbstractVector{Multiclass{3}}}}\n 2:\tSource @035 ⏎ AbstractVector{Multiclass{2}}\n" + "text/plain": "trained Machine; caches model-specific representations of data\n model: NeuralNetworkBinaryClassifier(builder = Short(n_hidden = 5, …), …)\n args: \n 1:\tSource @068 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Multiclass{4}}, AbstractVector{ScientificTypesBase.Multiclass{3}}}}\n 2:\tSource @047 ⏎ AbstractVector{ScientificTypesBase.Multiclass{2}}\n" }, "metadata": {}, "execution_count": 11 @@ -2432,17 +1392,6 @@ }, { "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "┌ Warning: Layer with Float32 parameters got Float64 input.\n", - "│ The input will be converted, but any earlier layers may be very slow.\n", - "│ layer = Dense(5 => 5, σ) # 30 parameters\n", - "│ summary(x) = \"5×200 Matrix{Float64}\"\n", - "└ @ Flux ~/.julia/packages/Flux/htpCe/src/layers/stateless.jl:59\n" - ] - }, { "output_type": "execute_result", "data": { @@ -2463,8 +1412,8 @@ { "cell_type": "markdown", "source": [ - "Notice how the model has learnt to almost perfectly distinguish the classes and all the information\n", - "has been in the categorical variables." + "Notice how the model has learnt to almost perfectly distinguish the classes and all the\n", + "information has been in the categorical variables." ], "metadata": {} }, @@ -2481,176 +1430,91 @@ "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=2}", - "image/png": "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xmjatGkNxLx27VpCyKBBg5r4GXfs2CHydNSgQYNEOm/If3vcqV9QkU/H5/MdHR0JIYJRlfHx8YSQoUOHHj58WEFBQVB///79Kysr4+PjhZ9/0tLSioiIEK5NWVlZT08vIiJC+M8YFRWVwMBA4WLbt28X+cUihGzdurWJHx8AWqzc3FwGg0Gj0ZKTk7+shqCgIEJIox3Pn+xx5/P5mzdvJoT83//9n2BLTk6OIBkVsLGxSUxMFDmvcLcOZfz48YICImPca2pqpk6dKlKeTqc/fvy4vphra2uNjIwIIZcvX27Kpfj48eOAAQOE61dRUdm9e7dwmbo97lSPPovFEi4WFRVFCPH09BRsWbBgASHk9OnTgwcPFtQvJyf3119/8fn8P/74Q/gp4SFDhrDZbMGxx48fJ4SsWrXq119/FU7ou3fvXlxcLChWWFjYp08fkUskLy//ueP4QTIwHST8i8/n37t3jxBSty9BAthsNnXX1d3dXbglKigo+Omnn27evBkfHx8XF7d//34NDQ1fX99bt24JyqxYsSI8PNzT0/Pp06cZGRkvX748f/68h4dHfecqKiqaPHkyl8sNCAhITExMT09/9OjRpk2bzMzMGogwPDycENJAtcL++uuvRYsWqaioHDt2LCUl5dGjRwMGDLh9+7aHhweXy21KDY16+fLlggUL/P39IyIigoODO3fuHBoaunr1and3d3t7+zt37kRERPz444/FxcXe3t78/67YUFlZOWzYsEGDBoWEhERERCxevLiqqmrq1Knl5eVUgejoaD8/PwMDgwsXLrx9+/bdu3fh4eHLli37shkVAKBFefjwIY/Ha9++fdu2bb+shuDgYEKIk5PTFxybmppKJfQjR44UbKyqqtLV1f3zzz8fPnyYkpLy4MGDmTNnJiQkDBs2rKamhipTVlY2YcIEFou1b9++xMTEjIyMx48fb9mype79YYH9+/efOHHCxcXl7t27GRkZ8fHxN27cmDZtWgPzgL1584bq8hfOlevD5XI9PDxCQkIGDx786NGjlJSUI0eOKCoqLliw4PDhw02/Jg375ZdfsrOzL168GB0dvWPHDjqdPm/evG3btq1Zs2bz5s2RkZE3btywtra+desW9ReCsFOnTh04cGDv3r3Pnz8PCgqyt7ePiIhYtWqVoMDy5cvv378/fvz4Z8+eUT+g586dc3d3b67g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rVr14sULR0fHOXPmNHCur4fEHQCajY6OjlNvF/q9A5/cK39///DhI5rY8ezs7Gxqaip8d5LH4yUkNOne67Rp0/7+++93794JtqSnp5eVldnY2Dx9+pTaUlRUlJSUJPLsVKtWrbKz//dXB/Ug7FeytbX97bffXr9+bWNjExgY+PUVAgC0BCNHjuS+vkvy331iX2ku7cXlcWPHNLGqadOmnT59OiUlRbAlIyOjtLSUELJz584jR47cvXv3k8MmdXV1hw4dum7dOuHM+9WrV4QQ4db+yZMnIk29trY2l8ulxm2y2ewm/rI0gMFgjB079vjx469evQoICKipqfnKChuAh1MBoDnt2b6lt4trja4V6T3t3618Pi14i9zroE0no5tYD5PJPHfu3NChQ2NjY11dXcvKym7cuOHp6WljY/P8+fO//vrr1atXmZmZ//d//9ezZ09vb2/hYz08PObPn+/g4ODj49O6deuEhISrV6/GxMR4eXn98ccfkyZN6tev35EjR8aOHWttbS184IgRI6ZPn66hoZGXlxcYGNiqVauvuRQHDx5MSkrq0qVLWVlZTEzMunXrvqY2AICWo3379jNmzjx+YDRr3nWiI7RAR2mOYsC4wUOG9O7du4lVDRkyZOHChY6OjtOnT2/dunViYuKVK1devHgRGRm5aNEid3f3tWvXUiXXr18v0iwHBAQMHDiwV69eI0aMoNFooaGhenp6p0+fXrNmzaRJkyoqKng83tatWy9evCh8lJycnLu7+7Rp00aMGBEUFPT1g1vGjRvXo0cPExOTkJAQZ2fnhkf+fCUk7gDQnBwcHK5euuA5cTLvyV/VHYcRVR1Smqsce0mFU3o9+KaFhUXTq+rWrdubN28uXLiQkpKipaW1e/duavlVbW3tbt26devWjSr2yeU2Nm/e7OXldfPmzaysLHt7+99//50a2v706dNTp069e/fO19d37NixVOF169ZRK0O5u7ufOHHi3r177dq1u3LlCnUHVlNTU3j+4K1btwqmtZk/f36bNm0IIePGjRNMCmZmZrZ+/XpCyNChQ2tra1+9eqWurh4SEtLEmdEAAGTC3l072Oy5p/w70RzHcswdCY3BzIyhRZ4bPHTI6RNHP6uqjRs3enp6BgUFZWVlderUae3atXp6elVVVQEBAcLFqLl6hRkbG8fExFy+fDkmJkZZWdnX13fo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AAAAMkBxBwAAAGSA4g4AAADIAMUdAAAAkAGKOwAAACADFHcAAABABijuAAAAgAxQ3AEAAAAZoLgDAAAAMkBxBwAAAGSA4g4AAADIgKnUAQAADd0777xz69Yt3bKXl9e6detqztm5c+fevXtNTExmz549ceJEwwYEgCaB4g4AqMPJkyeDgoK6dOkihHBwcKg54ciRI2vXro2Oji4rKxs/fryzs3P//v0NHhMAGjmKOwCgbgMGDKili0dERCxevLh3795CiDlz5mzfvp3iDgDPHNe4AwDqtmbNmldffXXFihUFBQU171Uqlb6+vrrll19+WalUGjYdADQJvOIOABA///zz3bt3Hxp0dHT08vISQrz11lseHh5GRkaRkZF9+/aNj483NzevnqbVavPz81u2bKm7qVAocnNz67/rhISEK1eubN++XXfT1NT01KlTj7wg55m4f/++sbGxmZmZnrYvF2q12sjISOoUEistLa2oqDAxMZE6iMQ4GYQQarVa6gjC3Nzc1LSOZk5xBwCITz755MaNGw8NDhkyRFfc582bVz3i6up65syZESNGVE8zMjKytbUtLS3V3SwpKaku8fXRpUuXF198ccaMGbqbJiYm7dq1e+IHUiczMzOKuxBCq9VaW1tLnUJixsbGzZs3p7hzMujI4iBQ3AEA4uOPP67PtGbNmtnb29d8bd7d3T05OfmVV14RQiQnJ7u5udV/16ampnZ2dh4eHvVfBQCaJq5xBwDURqVSJSYm6pb379//xx9/9OzZUwiRmJj4/vvv68YnTpwYFRVVXl5eWlq6a9euN954Q7K4ANB4UdwBALVRqVT9+vVzcHCwt7dfvXr1gQMHXFxchBC///57VFSUbs6cOXMcHR2dnZ1dXV1feOGFN998U9LIANA4cakMAKA2np6eubm5+fn5pqamCoWienzEiBFpaWm6ZXNz88OHDxcWFhobG7do0UKipADQyFHcAQB1a9WqVZ1zHqz1AIBnjktlAAAAABmguAMAAAAyQHEHAAAAZIDiDgAAAMgAxR0AAACQAYo7AAAAIAMUdwAAAEAGKO4AAACADFDcAQAAABmguAMAAAAyYKDirtVqtVqtYfZVH5WVlWq1WuoUAAAAQH3pvbhnZWUFBAQ0b97c0tLyjTfe0Pfu6pScnDxq1ChLS0tPT09nZ+dly5bdv39f6lAAAABAHfRb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o7/97W/VL7fn5OTMnTu3c+fObm5uo0ePvnDhwuO2Nnny5IMHDz44EhoaWj1y8ODBSZMmZWZmTpw4sX379r6+vl9++aUQ4qeffvL39/fw8Bg5cuT169er1/3444/feeed5OTkoKAgDw+PPn367N69u5bH0rdvX2dn579+DACgkfv5558PHz48e/bsB1u7EEKhULz//vvVN2NiYoYNG+bm5ubt7b148eI7d+48cmvnz58PCQlRqVSPG5k2bdqnn356+PDhXr16eXh4BAcHZ2RkVFVVffDBB926dfP29l6yZEn1m6Pu3bsXEhISExPzySef9OjRw9PTMygoKCkp6XGPpVWrVr169bKysnriowFUo7hDTnJycuLi4saOHVvLBY4FBQW9evXSde7ly5fn5uYOHDgwNjb2kZO//vrra9euPW7k2rVr0dHRw4cPt7OzW7RokY2Nzfjx43fs2BEYGOjn5zd//vzk5OQhQ4bcu3dPN//y5csHDx7U/RRZvHixlZXV9OnTv/vuu2f06AGgqTh69KgQ4s0336xlzoEDB/z9/TUazXvvvRcYGBgZGTlgwIDqJ+QHpaenR0dHl5aWPm7kyJEjH3zwwfLly8eNGzdjxozTp0+PGzdu4cKFx44dmzZt2vDhw7du3bp69WrdZI1GEx0d/e67727bti0kJGTq1Knnzp0bO3ZsZWXlM3v8wGNwqQzkJCUlRavVdunSpZY5H3744R9//HHp0qUePXoIIUJDQ318fBYuXHjjxo0n2GNZWdncuXNnz54thJg8eXLbtm3nzp0bFxeneyPsK6+80rNnz5iYmHHjxunmZ2VlHT16dNSoUUKIGTNmeHh47N69e9CgQU+wawBoslJSUoQQtTzbV1RULFq06OWXXz558qSpqakQwtfXNyAgYOfOnQsWLHiCPWZkZCQlJdnb2wshHBwc3nrrLXNz87NnzxobGwshCgoKPvnkk40bN1bPLykpUSqV5ubmQojOnTuPGzfu4sWLffr0eYJdA/X3/wGX/eYhedhdHgAAAABJRU5ErkJggg==", + "image/png": "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2LBhxIgRNjY2GzZsaG1tLSsr++yzz6ysrMaNG3f69GnJc2/cuOHv719QUBASEmJtbe3o6BgSEtLQ0NDZ32JnZ2dra6uoqNizRQH9HI64A+tdvHiREBIYGNhFzffff79y5UofH5/169dnZmbu3LkzKSkpISGh/a4zMzMzOjr6xIkTbUZOnjxJCKEoKjo6OjMzkxASFBQkFAp3795dWVk5aNAgoVC4ePHitLS0b775RlNTc+XKlYSQ2tra6OjorKwsVVXVoKCgmpqaPXv25OfnJycnv/XlAADQV8XFxRkbG7u7u3dRExAQcObMmSVLlowaNSohIWHhwoVZWVnffvtt+8rbt2/n5ubu3Lmzw5Hy8nJ6P29sbBwcHPz48ePt27eLxeLY2FgXF5cvvvji4sWLs2bNGjZs2NixYwkheXl59H7e0tLyn//855MnT77//ntlZeUO3xrgDaFxB9bLyspSV1cfNmxYZwUvX75ct27dlClTLly4QF/DZGVltXDhwujo6FmzZvXgHaurq9PT09XU1AghSkpKGzZsmDZtWlxcHP1oQUHBsWPH6MadpqysnJycTP+ToK+vv3jx4szMTCsrqx68NQBAP/T8+XMXF5cuCm7cuBEdHb1t27Z169YRQubNm6eqqvrdd98tXrzYxMSkB+9oamp67tw5erqwsHDHjh3fffddSEgIIWTBggXGxsbHjh2jG3eai4tLeHg4PV1bW3v06FE07tAb/j87D+9VK5TYegAAAABJRU5ErkJggg==", "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "" ], "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, "metadata": {}, @@ -2672,15 +1536,19 @@ " title = \"C1 Basis Columns\",\n", " xlabel = \"Column 1\",\n", " ylabel = \"Column 2\",\n", - " label = \"C1 Columns\",\n", - " legend = :topright)\n", + " xlim = (-5, 5),\n", + " ylim = (-5, 5),\n", + " label = nothing,\n", + ")\n", "\n", "p2 = scatter(C2_basis[1, :], C2_basis[2, :],\n", " title = \"C2 Basis Columns\",\n", " xlabel = \"Column 1\",\n", " ylabel = \"Column 2\",\n", - " label = \"C2 Columns\",\n", - " legend = :topright)\n", + " xlim = (-1.2, 1.0),\n", + " ylim = (-1.5, 0.25),\n", + " label = nothing,\n", + ")\n", "\n", "c1_cats = ['A', 'B', 'C', 'D']\n", "for (i, col) in enumerate(eachcol(C1_basis))\n", @@ -2700,8 +1568,9 @@ { "cell_type": "markdown", "source": [ - "As we can see, categories that were generated in a similar pattern were assigned similar vectors. In a dataset,\n", - "where some columns have high cardinality, it's expected that some of the categories will exhibit similar patterns." + "As we can see, categories that were generated in a similar pattern were assigned similar\n", + "vectors. In a dataset, where some columns have high cardinality, it's expected that some\n", + "of the categories will exhibit similar patterns." ], "metadata": {} }, @@ -2713,10 +1582,23 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "\u001b[1m5×5 DataFrame\u001b[0m\n\u001b[1m Row \u001b[0m│\u001b[1m C1_1 \u001b[0m\u001b[1m C1_2 \u001b[0m\u001b[1m C2_1 \u001b[0m\u001b[1m C2_2 \u001b[0m\u001b[1m R3 \u001b[0m\n\u001b[1m \u001b[0m│\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\u001b[90m Float32 \u001b[0m\u001b[90m Float64 \u001b[0m\n─────┼─────────────────────────────────────────────────────\n 1 │ -4.73264 -2.37719 -0.0605173 0.342042 0.445107\n 2 │ -3.61518 -4.22183 0.414665 0.362535 0.841927\n 3 │ -4.73264 -2.37719 -0.0605173 0.342042 0.637375\n 4 │ 3.56793 3.30689 -0.655706 -1.89323 0.37165\n 5 │ 3.6619 2.98503 -0.655706 -1.89323 0.230953", + "text/html": [ + "
5×5 DataFrame
RowC1_1C1_2C2_1C2_2R3
Float32Float32Float32Float32Float64
1-4.73264-2.37719-0.06051730.3420420.445107
2-3.61518-4.221830.4146650.3625350.841927
3-4.73264-2.37719-0.06051730.3420420.637375
43.567933.30689-0.655706-1.893230.37165
53.66192.98503-0.655706-1.893230.230953
" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ], "cell_type": "code", "source": [ - "X_tr = MLJ.transform(mach, X);" + "X_tr = MLJ.transform(mach, X);\n", + "first(X_tr, 5)" ], "metadata": {}, "execution_count": 14 @@ -2724,7 +1606,8 @@ { "cell_type": "markdown", "source": [ - "This will transform each categorical value into its corresponding embedding vector. Continuous value will remain intact." + "This will transform each categorical value into its corresponding embedding\n", + "vector. Continuous value will remain intact." ], "metadata": {} }, @@ -2744,11 +1627,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.1" + "version": "1.10.10" }, "kernelspec": { - "name": "julia-1.11", - "display_name": "Julia 1.11.1", + "name": "julia-1.10", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/entity_embeddings/notebook.jl b/docs/src/common_workflows/entity_embeddings/notebook.jl index ed4b8389..e62b46a2 100644 --- a/docs/src/common_workflows/entity_embeddings/notebook.jl +++ b/docs/src/common_workflows/entity_embeddings/notebook.jl @@ -3,23 +3,30 @@ # This demonstration is available as a Jupyter notebook or julia script # [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/common_workflows/entity_embeddings). -# Entity embedding is newer deep learning approach for categorical encoding introduced in 2016 by Cheng Guo and Felix Berkhahn. -# It employs a set of embedding layers to map each categorical feature into a dense continuous vector in a similar fashion to how they are employed in NLP architectures. - -# In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the `MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data (i.e., containing categorical features) because they have a built-in entity embedding layer. -# Moreover, they offer a `transform` method which encodes the categorical features with the learned embeddings. Such embeddings can then be used as features in downstream machine learning models. +# Entity embedding is newer deep learning approach for categorical encoding introduced in +# 2016 by Cheng Guo and Felix Berkhahn. It employs a set of embedding layers to map each +# categorical feature into a dense continuous vector in a similar fashion to how they are +# employed in NLP architectures. + +# In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the +# `MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data +# (i.e., containing categorical features) because they have a built-in entity embedding +# layer. Moreover, they offer a `transform` method which encodes the categorical features +# with the learned embeddings. Such embeddings can then be used as features in downstream +# machine learning models. # In this notebook, we will explore how to use entity embeddings in MLJFlux models. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* +# **This script tested using Julia 1.10** # ### Basic Imports -using MLJ -using Flux +using MLJ +using Flux using Optimisers using CategoricalArrays using DataFrames @@ -28,9 +35,13 @@ using Tables using ProgressMeter using Plots using ScientificTypes +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(246) + # Generate some data -X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=40) +X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=stable_rng()) X = DataFrame(X); # Visualize it @@ -48,32 +59,34 @@ ylabel!("Feature 2") plot(p) -# Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a meaningful way: -Random.seed!(40) -generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(['A', 'B']) : rand(['C', 'D']) -generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(['X', 'Y']) : rand(['Z']) +# Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a +# meaningful way: +rng = stable_rng() +generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(rng, ['A', 'B']) : rand(rng, ['C', 'D']) +generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(rng, ['X', 'Y']) : rand(rng, ['Z']) # Generate C1 and C2 columns -X[!, :C1] = [generate_C1(x) for x in X[!, :x1]] -X[!, :C2] = [generate_C2(x) for x in X[!, :x2]] +X[!, :C1] = [generate_C1(x) for x in X[!, :x1]]; +X[!, :C2] = [generate_C2(x) for x in X[!, :x2]]; X[!, :R3] = rand(1000); # A random continuous column. # Form final dataset using categorical and continuous columns X = X[!, [:C1, :C2, :R3]]; -# It's also necessary to cast the categorical columns to the correct scientific type as the embedding layer -# will have an effect on the model if and only if categorical columns exist. -X = coerce(X, :C1 =>Multiclass, :C2 =>Multiclass); +# It's also necessary to cast the categorical columns to the correct scientific type as +# the embedding layer will have an effect on the model if and only if categorical columns +# exist. +X = coerce(X, :C1=>Multiclass, :C2=>Multiclass); # Split the data (X_train, X_test), (y_train, y_test) = partition( - (X, y), - 0.8, - multi = true, - shuffle = true, - stratify = y, - rng = Random.Xoshiro(41) + (X, y), + 0.8, + multi = true, + shuffle = true, + stratify = y, + rng = stable_rng(), ); @@ -86,11 +99,11 @@ clf = MLJFlux.NeuralNetworkBinaryClassifier( optimiser = Optimisers.Adam(0.01), batch_size = 2, epochs = 100, - acceleration = CUDALibs(), + acceleration = CPU1(), # use `CUDALibs()` on a GPU embedding_dims = Dict(:C1 => 2, :C2 => 2,), ); -# Notice that we specified to embed each of the columns to 2D columns. By default, it uses `min(numfeats - 1, 10)` -# for the new dimensionality of any categorical feature. +# Notice that we specified to embed each of the columns to 2D columns. By default, it uses +# `min(numfeats - 1, 10)` for the new dimensionality of any categorical feature. # ### Train and evaluate mach = machine(clf, X_train, y_train) @@ -100,8 +113,9 @@ fit!(mach, verbosity = 0) # Get predictions on the training data y_pred = predict_mode(mach, X_test) balanced_accuracy(y_pred, y_test) -# Notice how the model has learnt to almost perfectly distinguish the classes and all the information -# has been in the categorical variables. + +# Notice how the model has learnt to almost perfectly distinguish the classes and all the +# information has been in the categorical variables. # ### Visualize the embedding space @@ -114,19 +128,23 @@ mapping_matrices = MLJFlux.get_embedding_matrices( C1_basis = mapping_matrices[:C1] C2_basis = mapping_matrices[:C2] -p1 = scatter(C1_basis[1, :], C1_basis[2, :], +p1 = scatter(C1_basis[1, :], C1_basis[2, :], title = "C1 Basis Columns", xlabel = "Column 1", ylabel = "Column 2", - label = "C1 Columns", - legend = :topright) + xlim = (-5, 5), + ylim = (-5, 5), + label = nothing, +) -p2 = scatter(C2_basis[1, :], C2_basis[2, :], +p2 = scatter(C2_basis[1, :], C2_basis[2, :], title = "C2 Basis Columns", xlabel = "Column 1", ylabel = "Column 2", - label = "C2 Columns", - legend = :topright) + xlim = (-1.2, 1.0), + ylim = (-1.5, 0.25), + label = nothing, +) c1_cats = ['A', 'B', 'C', 'D'] for (i, col) in enumerate(eachcol(C1_basis)) @@ -140,9 +158,14 @@ end plot(p1, p2, layout = (1, 2), size = (1000, 400)) -# As we can see, categories that were generated in a similar pattern were assigned similar vectors. In a dataset, -# where some columns have high cardinality, it's expected that some of the categories will exhibit similar patterns. +# As we can see, categories that were generated in a similar pattern were assigned similar +# vectors. In a dataset, where some columns have high cardinality, it's expected that some +# of the categories will exhibit similar patterns. # ### Transform (embed) data + X_tr = MLJ.transform(mach, X); -# This will transform each categorical value into its corresponding embedding vector. Continuous value will remain intact. \ No newline at end of file +first(X_tr, 5) + +# This will transform each categorical value into its corresponding embedding +# vector. Continuous value will remain intact. diff --git a/docs/src/common_workflows/entity_embeddings/notebook.md b/docs/src/common_workflows/entity_embeddings/notebook.md index dc7e509f..14bd2bd0 100644 --- a/docs/src/common_workflows/entity_embeddings/notebook.md +++ b/docs/src/common_workflows/entity_embeddings/notebook.md @@ -7,15 +7,21 @@ EditURL = "notebook.jl" This demonstration is available as a Jupyter notebook or julia script [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/common_workflows/entity_embeddings). -Entity embedding is newer deep learning approach for categorical encoding introduced in 2016 by Cheng Guo and Felix Berkhahn. -It employs a set of embedding layers to map each categorical feature into a dense continuous vector in a similar fashion to how they are employed in NLP architectures. - -In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the `MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data (i.e., containing categorical features) because they have a built-in entity embedding layer. -Moreover, they now offer a transform which encode the categorical features with the learnt embeddings to be used by an upstream machine learning model. +Entity embedding is newer deep learning approach for categorical encoding introduced in +2016 by Cheng Guo and Felix Berkhahn. It employs a set of embedding layers to map each +categorical feature into a dense continuous vector in a similar fashion to how they are +employed in NLP architectures. + +In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the +`MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data +(i.e., containing categorical features) because they have a built-in entity embedding +layer. Moreover, they offer a `transform` method which encodes the categorical features +with the learned embeddings. Such embeddings can then be used as features in downstream +machine learning models. In this notebook, we will explore how to use entity embeddings in MLJFlux models. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports @@ -30,12 +36,15 @@ using Tables using ProgressMeter using Plots using ScientificTypes +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(246) ```` Generate some data ````@example entity_embeddings -X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=40) +X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=stable_rng()) X = DataFrame(X); nothing #hide ```` @@ -58,19 +67,20 @@ ylabel!("Feature 2") plot(p) ```` -Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a meaningful way: +Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a +meaningful way: ````@example entity_embeddings -Random.seed!(40) -generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(['A', 'B']) : rand(['C', 'D']) -generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(['X', 'Y']) : rand(['Z']) +rng = stable_rng() +generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(rng, ['A', 'B']) : rand(rng, ['C', 'D']) +generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(rng, ['X', 'Y']) : rand(rng, ['Z']) ```` Generate C1 and C2 columns ````@example entity_embeddings -X[!, :C1] = [generate_C1(x) for x in X[!, :x1]] -X[!, :C2] = [generate_C2(x) for x in X[!, :x2]] +X[!, :C1] = [generate_C1(x) for x in X[!, :x1]]; +X[!, :C2] = [generate_C2(x) for x in X[!, :x2]]; X[!, :R3] = rand(1000); # A random continuous column. nothing #hide ```` @@ -82,11 +92,12 @@ X = X[!, [:C1, :C2, :R3]]; nothing #hide ```` -It's also necessary to cast the categorical columns to the correct scientific type as the embedding layer -will have an effect on the model if and only if categorical columns exist. +It's also necessary to cast the categorical columns to the correct scientific type as +the embedding layer will have an effect on the model if and only if categorical columns +exist. ````@example entity_embeddings -X = coerce(X, :C1 =>Multiclass, :C2 =>Multiclass); +X = coerce(X, :C1=>Multiclass, :C2=>Multiclass); nothing #hide ```` @@ -94,12 +105,12 @@ Split the data ````@example entity_embeddings (X_train, X_test), (y_train, y_test) = partition( - (X, y), - 0.8, - multi = true, - shuffle = true, - stratify = y, - rng = Random.Xoshiro(41) + (X, y), + 0.8, + multi = true, + shuffle = true, + stratify = y, + rng = stable_rng(), ); nothing #hide ```` @@ -115,14 +126,14 @@ clf = MLJFlux.NeuralNetworkBinaryClassifier( optimiser = Optimisers.Adam(0.01), batch_size = 2, epochs = 100, - acceleration = CUDALibs(), + acceleration = CPU1(), # use `CUDALibs()` on a GPU embedding_dims = Dict(:C1 => 2, :C2 => 2,), ); nothing #hide ```` -Notice that we specified to embed each of the columns to 2D columns. By default, it uses `min(numfeats - 1, 10)` -for the new dimensionality of any categorical feature. +Notice that we specified to embed each of the columns to 2D columns. By default, it uses +`min(numfeats - 1, 10)` for the new dimensionality of any categorical feature. ### Train and evaluate @@ -139,8 +150,8 @@ y_pred = predict_mode(mach, X_test) balanced_accuracy(y_pred, y_test) ```` -Notice how the model has learnt to almost perfectly distinguish the classes and all the information -has been in the categorical variables. +Notice how the model has learnt to almost perfectly distinguish the classes and all the +information has been in the categorical variables. ### Visualize the embedding space @@ -158,15 +169,19 @@ p1 = scatter(C1_basis[1, :], C1_basis[2, :], title = "C1 Basis Columns", xlabel = "Column 1", ylabel = "Column 2", - label = "C1 Columns", - legend = :topright) + xlim = (-5, 5), + ylim = (-5, 5), + label = nothing, +) p2 = scatter(C2_basis[1, :], C2_basis[2, :], title = "C2 Basis Columns", xlabel = "Column 1", ylabel = "Column 2", - label = "C2 Columns", - legend = :topright) + xlim = (-1.2, 1.0), + ylim = (-1.5, 0.25), + label = nothing, +) c1_cats = ['A', 'B', 'C', 'D'] for (i, col) in enumerate(eachcol(C1_basis)) @@ -181,17 +196,19 @@ end plot(p1, p2, layout = (1, 2), size = (1000, 400)) ```` -As we can see, categories that were generated in a similar pattern were assigned similar vectors. In a dataset, -where some columns have high cardinality, it's expected that some of the categories will exhibit similar patterns. +As we can see, categories that were generated in a similar pattern were assigned similar +vectors. In a dataset, where some columns have high cardinality, it's expected that some +of the categories will exhibit similar patterns. ### Transform (embed) data ````@example entity_embeddings X_tr = MLJ.transform(mach, X); -nothing #hide +first(X_tr, 5) ```` -This will transform each categorical value into its corresponding embedding vector. Continuous value will remain intact. +This will transform each categorical value into its corresponding embedding +vector. Continuous value will remain intact. --- diff --git a/docs/src/common_workflows/entity_embeddings/notebook.unexecuted.ipynb b/docs/src/common_workflows/entity_embeddings/notebook.unexecuted.ipynb index 233bac71..ec7fc0e6 100644 --- a/docs/src/common_workflows/entity_embeddings/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/entity_embeddings/notebook.unexecuted.ipynb @@ -18,16 +18,22 @@ { "cell_type": "markdown", "source": [ - "Entity embedding is newer deep learning approach for categorical encoding introduced in 2016 by Cheng Guo and Felix Berkhahn.\n", - "It employs a set of embedding layers to map each categorical feature into a dense continuous vector in a similar fashion to how they are employed in NLP architectures." + "Entity embedding is newer deep learning approach for categorical encoding introduced in\n", + "2016 by Cheng Guo and Felix Berkhahn. It employs a set of embedding layers to map each\n", + "categorical feature into a dense continuous vector in a similar fashion to how they are\n", + "employed in NLP architectures." ], "metadata": {} }, { "cell_type": "markdown", "source": [ - "In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the `MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data (i.e., containing categorical features) because they have a built-in entity embedding layer.\n", - "Moreover, they now offer a transform which encode the categorical features with the learnt embeddings to be used by an upstream machine learning model." + "In MLJFlux, the `NeuralNetworkClassifier`, `NeuralNetworkRegressor`, and the\n", + "`MultitargetNeuralNetworkRegressor`` can be trained and evaluated with heterogenous data\n", + "(i.e., containing categorical features) because they have a built-in entity embedding\n", + "layer. Moreover, they offer a `transform` method which encodes the categorical features\n", + "with the learned embeddings. Such embeddings can then be used as features in downstream\n", + "machine learning models." ], "metadata": {} }, @@ -43,7 +49,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -52,7 +59,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -76,7 +83,10 @@ "using Tables\n", "using ProgressMeter\n", "using Plots\n", - "using ScientificTypes" + "using ScientificTypes\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(246)" ], "metadata": {}, "execution_count": null @@ -92,7 +102,7 @@ "outputs": [], "cell_type": "code", "source": [ - "X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=40)\n", + "X, y = make_blobs(1000, 2; centers=2, as_table=true, rng=stable_rng())\n", "X = DataFrame(X);" ], "metadata": {}, @@ -129,7 +139,8 @@ { "cell_type": "markdown", "source": [ - "Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a meaningful way:" + "Let's write a function that creates categorical features C1 and C2 from x1 and x2 in a\n", + "meaningful way:" ], "metadata": {} }, @@ -137,9 +148,9 @@ "outputs": [], "cell_type": "code", "source": [ - "Random.seed!(40)\n", - "generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(['A', 'B']) : rand(['C', 'D'])\n", - "generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(['X', 'Y']) : rand(['Z'])" + "rng = stable_rng()\n", + "generate_C1(x1) = (x1 > mean(X.x1) ) ? rand(rng, ['A', 'B']) : rand(rng, ['C', 'D'])\n", + "generate_C2(x2) = (x2 > mean(X.x2) ) ? rand(rng, ['X', 'Y']) : rand(rng, ['Z'])" ], "metadata": {}, "execution_count": null @@ -155,8 +166,8 @@ "outputs": [], "cell_type": "code", "source": [ - "X[!, :C1] = [generate_C1(x) for x in X[!, :x1]]\n", - "X[!, :C2] = [generate_C2(x) for x in X[!, :x2]]\n", + "X[!, :C1] = [generate_C1(x) for x in X[!, :x1]];\n", + "X[!, :C2] = [generate_C2(x) for x in X[!, :x2]];\n", "X[!, :R3] = rand(1000); # A random continuous column." ], "metadata": {}, @@ -181,8 +192,9 @@ { "cell_type": "markdown", "source": [ - "It's also necessary to cast the categorical columns to the correct scientific type as the embedding layer\n", - "will have an effect on the model if and only if categorical columns exist." + "It's also necessary to cast the categorical columns to the correct scientific type as\n", + "the embedding layer will have an effect on the model if and only if categorical columns\n", + "exist." ], "metadata": {} }, @@ -190,7 +202,7 @@ "outputs": [], "cell_type": "code", "source": [ - "X = coerce(X, :C1 =>Multiclass, :C2 =>Multiclass);" + "X = coerce(X, :C1=>Multiclass, :C2=>Multiclass);" ], "metadata": {}, "execution_count": null @@ -207,12 +219,12 @@ "cell_type": "code", "source": [ "(X_train, X_test), (y_train, y_test) = partition(\n", - "\t(X, y),\n", - "\t0.8,\n", - "\tmulti = true,\n", - "\tshuffle = true,\n", - "\tstratify = y,\n", - "\trng = Random.Xoshiro(41)\n", + " (X, y),\n", + " 0.8,\n", + " multi = true,\n", + " shuffle = true,\n", + " stratify = y,\n", + " rng = stable_rng(),\n", ");" ], "metadata": {}, @@ -237,7 +249,7 @@ " optimiser = Optimisers.Adam(0.01),\n", " batch_size = 2,\n", " epochs = 100,\n", - " acceleration = CUDALibs(),\n", + " acceleration = CPU1(), # use `CUDALibs()` on a GPU\n", " embedding_dims = Dict(:C1 => 2, :C2 => 2,),\n", ");" ], @@ -247,8 +259,8 @@ { "cell_type": "markdown", "source": [ - "Notice that we specified to embed each of the columns to 2D columns. By default, it uses `min(numfeats - 1, 10)`\n", - "for the new dimensionality of any categorical feature." + "Notice that we specified to embed each of the columns to 2D columns. By default, it uses\n", + "`min(numfeats - 1, 10)` for the new dimensionality of any categorical feature." ], "metadata": {} }, @@ -290,8 +302,8 @@ { "cell_type": "markdown", "source": [ - "Notice how the model has learnt to almost perfectly distinguish the classes and all the information\n", - "has been in the categorical variables." + "Notice how the model has learnt to almost perfectly distinguish the classes and all the\n", + "information has been in the categorical variables." ], "metadata": {} }, @@ -319,15 +331,19 @@ " title = \"C1 Basis Columns\",\n", " xlabel = \"Column 1\",\n", " ylabel = \"Column 2\",\n", - " label = \"C1 Columns\",\n", - " legend = :topright)\n", + " xlim = (-5, 5),\n", + " ylim = (-5, 5),\n", + " label = nothing,\n", + ")\n", "\n", "p2 = scatter(C2_basis[1, :], C2_basis[2, :],\n", " title = \"C2 Basis Columns\",\n", " xlabel = \"Column 1\",\n", " ylabel = \"Column 2\",\n", - " label = \"C2 Columns\",\n", - " legend = :topright)\n", + " xlim = (-1.2, 1.0),\n", + " ylim = (-1.5, 0.25),\n", + " label = nothing,\n", + ")\n", "\n", "c1_cats = ['A', 'B', 'C', 'D']\n", "for (i, col) in enumerate(eachcol(C1_basis))\n", @@ -347,8 +363,9 @@ { "cell_type": "markdown", "source": [ - "As we can see, categories that were generated in a similar pattern were assigned similar vectors. In a dataset,\n", - "where some columns have high cardinality, it's expected that some of the categories will exhibit similar patterns." + "As we can see, categories that were generated in a similar pattern were assigned similar\n", + "vectors. In a dataset, where some columns have high cardinality, it's expected that some\n", + "of the categories will exhibit similar patterns." ], "metadata": {} }, @@ -363,7 +380,8 @@ "outputs": [], "cell_type": "code", "source": [ - "X_tr = MLJ.transform(mach, X);" + "X_tr = MLJ.transform(mach, X);\n", + "first(X_tr, 5)" ], "metadata": {}, "execution_count": null @@ -371,7 +389,8 @@ { "cell_type": "markdown", "source": [ - "This will transform each categorical value into its corresponding embedding vector. Continuous value will remain intact." + "This will transform each categorical value into its corresponding embedding\n", + "vector. Continuous value will remain intact." ], "metadata": {} }, @@ -391,11 +410,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.1" + "version": "1.10.10" }, "kernelspec": { - "name": "julia-1.11", - "display_name": "Julia 1.11.1", + "name": "julia-1.10", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/hyperparameter_tuning/Manifest.toml b/docs/src/common_workflows/hyperparameter_tuning/Manifest.toml deleted file mode 100644 index 7de851af..00000000 --- a/docs/src/common_workflows/hyperparameter_tuning/Manifest.toml +++ /dev/null @@ -1,1985 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "540de0ef73bde5cd1000ae716c1fee2e0f3a0bf1" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.25.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.9+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.5" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.5+0" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.7" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.3" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "6e55c6841ce3411ccb3457ee52fc48cb698d6fb0" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.2.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.4" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.7+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.43.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/common_workflows/hyperparameter_tuning/Project.toml b/docs/src/common_workflows/hyperparameter_tuning/Project.toml deleted file mode 100644 index b95d41bd..00000000 --- a/docs/src/common_workflows/hyperparameter_tuning/Project.toml +++ /dev/null @@ -1,7 +0,0 @@ -[deps] -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/hyperparameter_tuning/README.md b/docs/src/common_workflows/hyperparameter_tuning/README.md index b68a07e7..9c018232 100644 --- a/docs/src/common_workflows/hyperparameter_tuning/README.md +++ b/docs/src/common_workflows/hyperparameter_tuning/README.md @@ -1,15 +1,17 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | +| | | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/hyperparameter_tuning/notebook.ipynb b/docs/src/common_workflows/hyperparameter_tuning/notebook.ipynb index 18a49f77..ddb84f2b 100644 --- a/docs/src/common_workflows/hyperparameter_tuning/notebook.ipynb +++ b/docs/src/common_workflows/hyperparameter_tuning/notebook.ipynb @@ -29,14 +29,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/hyperparameter_tuning`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -45,7 +46,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -57,14 +58,25 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using Plots # To plot tuning results\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -77,12 +89,21 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "(sepal_length = Float32[6.1, 7.3, 6.3, 4.8, 5.9, 7.1, 6.7, 5.4, 6.0, 6.9 … 5.0, 6.4, 5.7, 4.6, 5.5, 4.6, 5.6, 5.7, 6.0, 5.0], sepal_width = Float32[2.9, 2.9, 3.4, 3.4, 3.0, 3.0, 3.0, 3.9, 3.0, 3.1 … 3.3, 2.7, 2.5, 3.2, 2.4, 3.1, 2.8, 3.0, 2.9, 3.5], petal_length = Float32[4.7, 6.3, 5.6, 1.9, 5.1, 5.9, 5.0, 1.7, 4.8, 4.9 … 1.4, 5.3, 5.0, 1.4, 3.7, 1.5, 4.9, 4.2, 4.5, 1.6], petal_width = Float32[1.4, 1.8, 2.4, 0.2, 1.8, 2.1, 1.7, 0.4, 1.8, 1.5 … 0.2, 1.9, 2.0, 0.2, 1.0, 0.2, 2.0, 1.2, 1.5, 0.6])" + }, + "metadata": {}, + "execution_count": 3 + } + ], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": 3 @@ -115,7 +136,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 4 @@ -129,7 +150,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=10,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -162,7 +183,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NominalRange(optimiser = Adam(0.0001, (0.9, 0.999), 1.0e-8), Adam(0.00215443, (0.9, 0.999), 1.0e-8), Adam(0.0464159, (0.9, 0.999), 1.0e-8), ...)" + "text/plain": "NominalRange(optimiser = Optimisers.Adam(eta=0.0001, beta=(0.9, 0.999), epsilon=1.0e-8), Optimisers.Adam(eta=0.0021544346900318843, beta=(0.9, 0.999), epsilon=1.0e-8), Optimisers.Adam(eta=0.046415888336127795, beta=(0.9, 0.999), epsilon=1.0e-8), ...)" }, "metadata": {}, "execution_count": 5 @@ -193,7 +214,7 @@ "tuned_model = TunedModel(\n", " model=clf,\n", " tuning=Grid(goal=25),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=5, rng=stable_rng()),\n", " range=[r1, r2],\n", " measure=cross_entropy,\n", ");" @@ -230,7 +251,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.0464159, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 1, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.046415888336127795, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 26, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0xdaecd35b6770952820ed8f92c12e3d97), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 8 @@ -273,13 +294,13 @@ "text": [ "[ Info: Training machine(ProbabilisticTunedModel(model = NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …), …), …).\n", "[ Info: Attempting to evaluate 25 models.\n", - "\rEvaluating over 25 metamodels: 0%[> ] ETA: N/A\u001b[K\rEvaluating over 25 metamodels: 4%[=> ] ETA: 0:00:03\u001b[K\rEvaluating over 25 metamodels: 8%[==> ] ETA: 0:00:02\u001b[K\rEvaluating over 25 metamodels: 12%[===> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 16%[====> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 20%[=====> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 24%[======> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 28%[=======> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 32%[========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 36%[=========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 40%[==========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 44%[===========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 48%[============> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 52%[=============> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 56%[==============> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 60%[===============> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 64%[================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 68%[=================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 72%[==================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 76%[===================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 80%[====================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 84%[=====================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 88%[======================> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 92%[=======================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 96%[========================>] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 100%[=========================] Time: 0:00:06\u001b[K\n" + "\rEvaluating over 25 metamodels: 8%[==> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 12%[===> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 16%[====> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 20%[=====> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 24%[======> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 28%[=======> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 32%[========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 36%[=========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 40%[==========> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 44%[===========> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 48%[============> ] ETA: 0:00:01\u001b[K\rEvaluating over 25 metamodels: 52%[=============> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 56%[==============> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 60%[===============> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 64%[================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 68%[=================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 72%[==================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 76%[===================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 80%[====================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 84%[=====================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 88%[======================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 92%[=======================> ] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 96%[========================>] ETA: 0:00:00\u001b[K\rEvaluating over 25 metamodels: 100%[=========================] Time: 0:00:04\u001b[K\n" ] }, { "output_type": "execute_result", "data": { - "text/plain": "(parameter_name = \"epochs\",\n parameter_scale = :log10,\n parameter_values = [1, 2, 3, 4, 5, 6, 7, 9, 11, 13 … 39, 46, 56, 67, 80, 96, 116, 139, 167, 200],\n measurements = [0.9231712033780419, 0.7672938542047157, 0.6736075721456418, 0.6064130950372606, 0.5595521804926612, 0.5270759259385482, 0.5048969423979114, 0.47993815474701584, 0.46130985568830307, 0.4449225600160762 … 0.1621185148276446, 0.12283639917434747, 0.09543014842693512, 0.07850181447968614, 0.06950203807005066, 0.063248279208185, 0.060053521895940286, 0.05921442672620914, 0.05921052970422136, 0.060379476300399186],)" + "text/plain": "(parameter_name = \"epochs\", parameter_scale = :log10, parameter_values = [1, 2, 3, 4, 5, 6, 7, 9, 11, 13 … 39, 46, 56, 67, 80, 96, 116, 139, 167, 200], measurements = [0.9214636408385738, 0.7318501129168069, 0.5886267528056728, 0.4968992217498569, 0.43573753688039096, 0.39339002325997896, 0.3599216215197088, 0.31099590636718116, 0.25622588724960427, 0.18429349880379334 … 0.09145404446270558, 0.08868907195254361, 0.08640950431907864, 0.0848536102513252, 0.08433048876969557, 0.08319838787740635, 0.08239375691521088, 0.08145137925210058, 0.08152555902547001, 0.0795986931605368])" }, "metadata": {}, "execution_count": 9 @@ -293,7 +314,7 @@ " X,\n", " y,\n", " range=r,\n", - " resampling=CV(nfolds=4, rng=42),\n", + " resampling=CV(nfolds=4, rng=stable_rng()),\n", " measure=cross_entropy,\n", ")" ], @@ -313,90 +334,51 @@ "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=1}", - "image/png": "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", + "image/png": "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+++/w8LC6tatW7r/wYMH69aty8vL69evX/PmzevUqXPt2jVfX9/ExMTatWvLWDCYtqysrDNnzty8ebNr165+fn6l++/evfvzzz8XFxcPGDAgICBAxgrBfIiieO3atfPnz9vY2PTr1690vyRJW7duTUhIqFOnzogRIxQKxZo1a7Zv375z504zbydws2bNkruGF9GsWbNDhw5t27atUaNGgYGBmp2ZmZnNmzd3dXV1cXEZN25c69atW7Vq9cknn7i5uc2ePXv8+PGNGzeWt2wwVXXr1j158uSvv/7aunXrBg0aaHampKQ0a9bM19fX1tZ27NixnTp1OnPmTGxsbEJCAsdxnp6ednZ28pYNJmnJkiUTJ05MSEiIj48fN25c6f7p06evXLmyQ4cOv/76a3R0tK2t7bhx48aOHXv16tWEhITmzZub7VqAxjpYRhAEnufbtGkzYcKEkSNHanYuWLAgJiZm//79RPT1119HRUVFR0efPHny8OHDLVu27NSpk6wlgynTXJCNGjWaPXt2//79NTtnzZp16dKlbdu2EdFnn3124cKF4cOHp6Wlad6NjIz08vKSrWIwXZqrcf369YsXLz59+rRmZ3Z2tre3d0JCQv369XNycry8vDZs2JCamlr6p8aOHWu2QWist0Z5Xkvlhw8fjoiI0LyOiIj46KOP1Gp169atW7durd/qwOxovSAPHTr02muvaV5HRER88803mlAE0CmtV+PJkyfd3Nw0j56wt7dv06ZNcnLyhAkT9F6dITKpUaMpKSmurq6a1+7u7iUlJenp6fKWBOas3AWZlZVVWFgob0lgth48eFD2uRPu7u4PHjyQsR6DYlJByHGcWq3WvBYEgYjMvAcY5FXugmQYhuM4eUsCs8XzfOnVSESiKGptOJonkwpCLy+v5ORkzevk5GQrKytHR0d5SwJzVu6CdHV1VSqV8pYEZsvT07P0aiSi+/fvo4u6lEkFYc+ePbdv36751rNt27aePXuabd8vGIKePXtu27ZNMx5Nc0HKXRGYr+Dg4KKiohMnThDR/fv3ExISSkdUgLGOGp05c2Z8fPzp06erV6/u6en55ZdftmzZsqCgoEOHDg4ODj4+Pnv27Dlw4ABmboF+fPDBBxcuXIiPj/f393dzc/vmm28aNWr06NGj4ODgGjVquLi4xMTEHD16tOycVwAdOXv27LRp01JS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", "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "" ], "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, "metadata": {}, @@ -432,11 +414,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/hyperparameter_tuning/notebook.jl b/docs/src/common_workflows/hyperparameter_tuning/notebook.jl index 3c85ec16..3388b9d6 100644 --- a/docs/src/common_workflows/hyperparameter_tuning/notebook.jl +++ b/docs/src/common_workflows/hyperparameter_tuning/notebook.jl @@ -7,27 +7,27 @@ # models with emphasis on training hyperparameters. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* - +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using Plots # To plot tuning results import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions -# ### Loading and Splitting the Data - -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters +stable_rng() = StableRNGs.StableRNG(123) +# ### Loading and Splitting the Data +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data # ### Instantiating the model @@ -40,7 +40,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=10, - rng=42, + rng=stable_rng(), ) # ### Hyperparameter Tuning Example @@ -60,15 +60,18 @@ r2 = range(clf, :optimiser, values=optimisers) tuned_model = TunedModel( model=clf, tuning=Grid(goal=25), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=5, rng=stable_rng()), range=[r1, r2], measure=cross_entropy, ); # Then wrapping our tuned model in a machine and fitting it. + mach = machine(tuned_model, X, y); fit!(mach, verbosity=0); + # Let's check out the best performing model: + fitted_params(mach).best_model @@ -84,7 +87,7 @@ curve = learning_curve( X, y, range=r, - resampling=CV(nfolds=4, rng=42), + resampling=CV(nfolds=4, rng=stable_rng()), measure=cross_entropy, ) diff --git a/docs/src/common_workflows/hyperparameter_tuning/notebook.md b/docs/src/common_workflows/hyperparameter_tuning/notebook.md index d6649fe0..a1a8fd8c 100644 --- a/docs/src/common_workflows/hyperparameter_tuning/notebook.md +++ b/docs/src/common_workflows/hyperparameter_tuning/notebook.md @@ -10,25 +10,26 @@ This demonstration is available as a Jupyter notebook or julia script In this workflow example we learn how to tune different hyperparameters of MLJFlux models with emphasis on training hyperparameters. -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example hyperparameter_tuning using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source using Plots # To plot tuning results import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) ```` ### Loading and Splitting the Data ````@example hyperparameter_tuning -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters -nothing #hide +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data ```` ### Instantiating the model @@ -43,7 +44,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=10, - rng=42, + rng=stable_rng(), ) ```` @@ -68,7 +69,7 @@ constructor. tuned_model = TunedModel( model=clf, tuning=Grid(goal=25), - resampling=CV(nfolds=5, rng=42), + resampling=CV(nfolds=5, rng=stable_rng()), range=[r1, r2], measure=cross_entropy, ); @@ -103,7 +104,7 @@ curve = learning_curve( X, y, range=r, - resampling=CV(nfolds=4, rng=42), + resampling=CV(nfolds=4, rng=stable_rng()), measure=cross_entropy, ) ```` diff --git a/docs/src/common_workflows/hyperparameter_tuning/notebook.unexecuted.ipynb b/docs/src/common_workflows/hyperparameter_tuning/notebook.unexecuted.ipynb index bbb6280a..4e616a03 100644 --- a/docs/src/common_workflows/hyperparameter_tuning/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/hyperparameter_tuning/notebook.unexecuted.ipynb @@ -28,7 +28,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -37,7 +38,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -54,9 +55,11 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", "using Plots # To plot tuning results\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -72,9 +75,9 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": null @@ -104,7 +107,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=10,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -159,7 +162,7 @@ "tuned_model = TunedModel(\n", " model=clf,\n", " tuning=Grid(goal=25),\n", - " resampling=CV(nfolds=5, rng=42),\n", + " resampling=CV(nfolds=5, rng=stable_rng()),\n", " range=[r1, r2],\n", " measure=cross_entropy,\n", ");" @@ -232,7 +235,7 @@ " X,\n", " y,\n", " range=r,\n", - " resampling=CV(nfolds=4, rng=42),\n", + " resampling=CV(nfolds=4, rng=stable_rng()),\n", " measure=cross_entropy,\n", ")" ], @@ -277,11 +280,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/incremental_training/Manifest.toml b/docs/src/common_workflows/incremental_training/Manifest.toml deleted file mode 100644 index 71496de3..00000000 --- a/docs/src/common_workflows/incremental_training/Manifest.toml +++ /dev/null @@ -1,1364 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "320d9911b43782f24ec06e345393811f5e76128b" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/docs/src/common_workflows/incremental_training/Project.toml b/docs/src/common_workflows/incremental_training/Project.toml deleted file mode 100644 index 631dd106..00000000 --- a/docs/src/common_workflows/incremental_training/Project.toml +++ /dev/null @@ -1,6 +0,0 @@ -[deps] -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/incremental_training/README.md b/docs/src/common_workflows/incremental_training/README.md index b68a07e7..ada5c5a4 100644 --- a/docs/src/common_workflows/incremental_training/README.md +++ b/docs/src/common_workflows/incremental_training/README.md @@ -1,15 +1,16 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.ipynb` | Juptyer notebook (executed) | +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/incremental_training/notebook.ipynb b/docs/src/common_workflows/incremental_training/notebook.ipynb index e3b44f52..22ce95ac 100644 --- a/docs/src/common_workflows/incremental_training/notebook.ipynb +++ b/docs/src/common_workflows/incremental_training/notebook.ipynb @@ -28,14 +28,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/common_workflows/incremental_training`\n" + " Activating project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs`\n" ] } ], "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -56,13 +57,24 @@ "metadata": {} }, { - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "stable_rng (generic function with 1 method)" + }, + "metadata": {}, + "execution_count": 2 + } + ], "cell_type": "code", "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": 2 @@ -78,14 +90,14 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X) # To be compatible with type of network network parameters\n", + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data\n", "(X_train, X_test), (y_train, y_test) = partition(\n", " (X, y), 0.8,\n", " multi = true,\n", " shuffle = true,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ");" ], "metadata": {}, @@ -119,7 +131,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Adam(0.01, (0.9, 0.999), 1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = 42, \n optimiser_changes_trigger_retraining = false, \n acceleration = CPU1{Nothing}(nothing))" + "text/plain": "NeuralNetworkClassifier(\n builder = MLP(\n hidden = (5, 4), \n σ = NNlib.relu), \n finaliser = NNlib.softmax, \n optimiser = Optimisers.Adam(eta=0.01, beta=(0.9, 0.999), epsilon=1.0e-8), \n loss = Flux.Losses.crossentropy, \n epochs = 10, \n batch_size = 8, \n lambda = 0.0, \n alpha = 0.0, \n rng = StableRNGs.LehmerRNG(state=0x000000000000000000000000000000f7), \n optimiser_changes_trigger_retraining = false, \n acceleration = ComputationalResources.CPU1{Nothing}(nothing), \n embedding_dims = Dict{Symbol, Real}())" }, "metadata": {}, "execution_count": 4 @@ -133,7 +145,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=10,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -156,18 +168,10 @@ }, { "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ Info: Training machine(NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …), …).\n", - "\rOptimising neural net: 18%[====> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 27%[======> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 36%[=========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 45%[===========> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 55%[=============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 64%[===============> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 73%[==================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 82%[====================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 91%[======================> ] ETA: 0:00:00\u001b[K\rOptimising neural net: 100%[=========================] Time: 0:00:00\u001b[K\n" - ] - }, { "output_type": "execute_result", "data": { - "text/plain": "trained Machine; caches model-specific representations of data\n model: NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …)\n args: \n 1:\tSource @547 ⏎ Table{AbstractVector{Continuous}}\n 2:\tSource @645 ⏎ AbstractVector{Multiclass{3}}\n" + "text/plain": "trained Machine; caches model-specific representations of data\n model: NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …)\n args: \n 1:\tSource @372 ⏎ ScientificTypesBase.Table{AbstractVector{ScientificTypesBase.Continuous}}\n 2:\tSource @569 ⏎ AbstractVector{ScientificTypesBase.Multiclass{3}}\n" }, "metadata": {}, "execution_count": 5 @@ -176,7 +180,7 @@ "cell_type": "code", "source": [ "mach = machine(clf, X_train, y_train)\n", - "fit!(mach)" + "fit!(mach, verbosity=0)" ], "metadata": {}, "execution_count": 5 @@ -193,7 +197,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.4392339631006042" + "text/plain": "0.22537291610526708" }, "metadata": {}, "execution_count": 6 @@ -211,7 +215,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.9" + "text/plain": "0.9333333333333333" }, "metadata": {}, "execution_count": 7 @@ -254,36 +258,36 @@ "output_type": "stream", "text": [ "[ Info: Updating machine(NeuralNetworkClassifier(builder = MLP(hidden = (5, 4), …), …), …).\n", - "[ Info: Loss is 0.4393\n", - "[ Info: Loss is 0.4317\n", - "[ Info: Loss is 0.4244\n", - "[ Info: Loss is 0.4171\n", - "[ Info: Loss is 0.4096\n", - "[ Info: Loss is 0.4017\n", - "[ Info: Loss is 0.3931\n", - "[ Info: Loss is 0.3838\n", - "[ Info: Loss is 0.3737\n", - "[ Info: Loss is 0.3626\n", - "[ Info: Loss is 0.3505\n", - "[ Info: Loss is 0.3382\n", - "[ Info: Loss is 0.3244\n", - "[ Info: Loss is 0.3095\n", - "[ Info: Loss is 0.2954\n", - "[ Info: Loss is 0.2813\n", - "[ Info: Loss is 0.2654\n", - "[ Info: Loss is 0.25\n", - "[ Info: Loss is 0.235\n", - "[ Info: Loss is 0.2203\n", - "[ Info: Loss is 0.2118\n", - "[ Info: Loss is 0.196\n", - "[ Info: Loss is 0.179\n", - "[ Info: Loss is 0.1674\n", - "[ Info: Loss is 0.1586\n", - "[ Info: Loss is 0.1469\n", - "[ Info: Loss is 0.1353\n", - "[ Info: Loss is 0.1251\n", - "[ Info: Loss is 0.1173\n", - "[ Info: Loss is 0.1102\n" + "[ Info: Loss is 0.2124\n", + "[ Info: Loss is 0.1803\n", + "[ Info: Loss is 0.1545\n", + "[ Info: Loss is 0.1345\n", + "[ Info: Loss is 0.1192\n", + "[ Info: Loss is 0.1076\n", + "[ Info: Loss is 0.09877\n", + "[ Info: Loss is 0.09212\n", + "[ Info: Loss is 0.08716\n", + "[ Info: Loss is 0.08347\n", + "[ Info: Loss is 0.08059\n", + "[ Info: Loss is 0.07807\n", + "[ Info: Loss is 0.07564\n", + "[ Info: Loss is 0.07322\n", + "[ Info: Loss is 0.07085\n", + "[ Info: Loss is 0.06863\n", + "[ Info: Loss is 0.06663\n", + "[ Info: Loss is 0.06484\n", + "[ Info: Loss is 0.06322\n", + "[ Info: Loss is 0.06174\n", + "[ Info: Loss is 0.06039\n", + "[ Info: Loss is 0.05912\n", + "[ Info: Loss is 0.05794\n", + "[ Info: Loss is 0.05687\n", + "[ Info: Loss is 0.05586\n", + "[ Info: Loss is 0.05491\n", + "[ Info: Loss is 0.05402\n", + "[ Info: Loss is 0.05317\n", + "[ Info: Loss is 0.05238\n", + "[ Info: Loss is 0.05162\n" ] } ], @@ -308,7 +312,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.10519664737051289" + "text/plain": "0.04072631383146386" }, "metadata": {}, "execution_count": 9 @@ -326,7 +330,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.9666666666666667" + "text/plain": "0.9333333333333333" }, "metadata": {}, "execution_count": 10 @@ -363,11 +367,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/incremental_training/notebook.jl b/docs/src/common_workflows/incremental_training/notebook.jl index 6d44c046..750e2b5f 100644 --- a/docs/src/common_workflows/incremental_training/notebook.jl +++ b/docs/src/common_workflows/incremental_training/notebook.jl @@ -6,7 +6,8 @@ # In this workflow example we explore how to incrementally train MLJFlux models. using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md # **Julia version** is assumed to be 1.10.* @@ -15,20 +16,22 @@ Pkg.instantiate(); #!md using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) # ### Loading and Splitting the Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X) # To be compatible with type of network network parameters +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data (X_train, X_test), (y_train, y_test) = partition( (X, y), 0.8, multi = true, shuffle = true, - rng=42, + rng=stable_rng(), ); @@ -43,7 +46,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=10, - rng=42, + rng=stable_rng(), ) # ### Initial round of training @@ -52,7 +55,7 @@ clf = NeuralNetworkClassifier( # specified above. mach = machine(clf, X_train, y_train) -fit!(mach) +fit!(mach, verbosity=0) # Let's evaluate the training loss and validation accuracy training_loss = cross_entropy(predict(mach, X_train), y_train) diff --git a/docs/src/common_workflows/incremental_training/notebook.md b/docs/src/common_workflows/incremental_training/notebook.md index 3810f90c..6b887100 100644 --- a/docs/src/common_workflows/incremental_training/notebook.md +++ b/docs/src/common_workflows/incremental_training/notebook.md @@ -16,21 +16,23 @@ In this workflow example we explore how to incrementally train MLJFlux models. ````@example incremental_training using MLJ # Has MLJFlux models using Flux # For more flexibility -import RDatasets # Dataset source import Optimisers # native Flux.jl optimisers no longer supported +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) ```` ### Loading and Splitting the Data ````@example incremental_training -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X) # To be compatible with type of network network parameters +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data (X_train, X_test), (y_train, y_test) = partition( (X, y), 0.8, multi = true, shuffle = true, - rng=42, + rng=stable_rng(), ); nothing #hide ```` @@ -47,7 +49,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=10, - rng=42, + rng=stable_rng(), ) ```` @@ -58,7 +60,7 @@ specified above. ````@example incremental_training mach = machine(clf, X_train, y_train) -fit!(mach) +fit!(mach, verbosity=0) ```` Let's evaluate the training loss and validation accuracy diff --git a/docs/src/common_workflows/incremental_training/notebook.unexecuted.ipynb b/docs/src/common_workflows/incremental_training/notebook.unexecuted.ipynb index b9227430..8a87ec3b 100644 --- a/docs/src/common_workflows/incremental_training/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/incremental_training/notebook.unexecuted.ipynb @@ -27,7 +27,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -53,8 +54,10 @@ "source": [ "using MLJ # Has MLJFlux models\n", "using Flux # For more flexibility\n", - "import RDatasets # Dataset source\n", - "import Optimisers # native Flux.jl optimisers no longer supported" + "import Optimisers # native Flux.jl optimisers no longer supported\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -70,14 +73,14 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X) # To be compatible with type of network network parameters\n", + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data\n", "(X_train, X_test), (y_train, y_test) = partition(\n", " (X, y), 0.8,\n", " multi = true,\n", " shuffle = true,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ");" ], "metadata": {}, @@ -108,7 +111,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=10,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -134,7 +137,7 @@ "cell_type": "code", "source": [ "mach = machine(clf, X_train, y_train)\n", - "fit!(mach)" + "fit!(mach, verbosity=0)" ], "metadata": {}, "execution_count": null @@ -247,11 +250,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/common_workflows/live_training/Manifest.toml b/docs/src/common_workflows/live_training/Manifest.toml deleted file mode 100644 index 7de851af..00000000 --- a/docs/src/common_workflows/live_training/Manifest.toml +++ /dev/null @@ -1,1985 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "540de0ef73bde5cd1000ae716c1fee2e0f3a0bf1" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "227985d885b4dbce5e18a96f9326ea1e836e5a03" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.69.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.24.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.25.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.109" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FeatureSelection]] -deps = ["MLJModelInterface", "ScientificTypesBase", "Tables"] -git-tree-sha1 = "aef9de607c5313ae2ad78f339eee8732cf38d150" -uuid = "33837fe5-dbff-4c9e-8c2f-c5612fe2b8b6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "8a66c07630d6428eaab3506a0eabfcf4a9edea05" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.11" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.9+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.5" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.5+0" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.7" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "8e5a339882cc401688d79b811d923a38ba77d50a" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.20" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "389aea28d882a40b5e1747069af71bdbd47a1cae" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "7.2.1" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.3" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "FeatureSelection", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "fb2da07c720db5d900bcaa940e1d098de281747a" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.6" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f707a01a92d664479522313907c07afa5d81df19" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.5" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "24e5d28b2ea86b3feb6af5a5735f012d62e27b65" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.4.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.3" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "Optimisers", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "2fcdce39d979f2865aaa82d5750c6ee4ce543f4d" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.5.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "f93f381a82fc1768c1a99c27a84b7ea1b1ee186d" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.2" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "88ef480f46e0506143681b3fb14d86742f3cecb1" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.10.0" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "42bcff728e44bcb682885a8f9900f9f4b4891c18" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.17.1" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "97f959ae512736b02c69a08af45afc5321bcef91" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.7" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - - [deps.Metalhead.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "bf17d9cb4f0d2882351dfad030598f64286e5936" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.8" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.14+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "6e55c6841ce3411ccb3457ee52fc48cb698d6fb0" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.2.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.4" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "6e00379a24597be4ae1ee6b2d882e15392040132" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.5" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "983c41a0ddd6c19f5607ca87271d7c7620ab5d50" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.3.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.2.0+2024a" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "a6ae8d7a27940c33624f8c7bde5528de21ba730d" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.17.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "a947ea21087caba0a798c5e494d0bb78e3a1a3a0" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.9" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.7+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.43.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/common_workflows/live_training/Project.toml b/docs/src/common_workflows/live_training/Project.toml deleted file mode 100644 index b95d41bd..00000000 --- a/docs/src/common_workflows/live_training/Project.toml +++ /dev/null @@ -1,7 +0,0 @@ -[deps] -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" diff --git a/docs/src/common_workflows/live_training/README.md b/docs/src/common_workflows/live_training/README.md index b68a07e7..22356cf1 100644 --- a/docs/src/common_workflows/live_training/README.md +++ b/docs/src/common_workflows/live_training/README.md @@ -1,15 +1,15 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ diff --git a/docs/src/common_workflows/live_training/notebook.jl b/docs/src/common_workflows/live_training/notebook.jl index de1a6fb8..f98c046a 100644 --- a/docs/src/common_workflows/live_training/notebook.jl +++ b/docs/src/common_workflows/live_training/notebook.jl @@ -4,17 +4,20 @@ # [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/common_workflows/live_training). using Pkg #!md -Pkg.activate(@__DIR__); #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md Pkg.instantiate(); #!md -# **Julia version** is assumed to be 1.10.* +# **This script tested using Julia 1.10** # ### Basic Imports using MLJ using Flux -import RDatasets import Optimisers +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) #- @@ -22,10 +25,9 @@ using Plots # ### Loading and Splitting the Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters - +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data # ### Instantiating the model @@ -39,7 +41,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) @@ -75,4 +77,19 @@ iterated_model = IteratedModel( # Simply fitting the model is all we need mach = machine(iterated_model, X, y) -fit!(mach, force=true) +fit!(mach) +validation_losses + +# Note that the wrapped model sets aside some data on which to make out-of-sample +# estimates of the loss, which is how `validation_losses` are calculated. But if we use +# `mach` to make predictions on new input features, these are based on retraining the model +# on *all* provided data. + +Xnew = ( + sepal_length = Float32[5.8, 5.8, 5.8], + sepal_width = Float32[4.0, 2.6, 2.7], + petal_length = Float32[1.2, 4.0, 4.1], + petal_width = Float32[0.2, 1.2, 1.0], +) + +predict_mode(mach, Xnew) diff --git a/docs/src/common_workflows/live_training/notebook.md b/docs/src/common_workflows/live_training/notebook.md index 14b77358..9540c522 100644 --- a/docs/src/common_workflows/live_training/notebook.md +++ b/docs/src/common_workflows/live_training/notebook.md @@ -7,15 +7,17 @@ EditURL = "notebook.jl" This demonstration is available as a Jupyter notebook or julia script [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/common_workflows/live_training). -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ### Basic Imports ````@example live_training using MLJ using Flux -import RDatasets import Optimisers +using StableRNGs # for reproducibility across Julia versions + +stable_rng() = StableRNGs.StableRNG(123) ```` ````@example live_training @@ -25,10 +27,9 @@ using Plots ### Loading and Splitting the Data ````@example live_training -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), rng=123); -X = Float32.(X); # To be compatible with type of network network parameters -nothing #hide +iris = load_iris() # a named-tuple of vectors +y, X = unpack(iris, ==(:target), rng=stable_rng()) +X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data ```` ### Instantiating the model @@ -44,7 +45,7 @@ clf = NeuralNetworkClassifier( optimiser=Optimisers.Adam(0.01), batch_size=8, epochs=50, - rng=42, + rng=stable_rng(), ) ```` @@ -82,7 +83,24 @@ Simply fitting the model is all we need ````@example live_training mach = machine(iterated_model, X, y) -fit!(mach, force=true) +fit!(mach) +validation_losses +```` + +Note that the wrapped model sets aside some data on which to make out-of-sample +estimates of the loss, which is how `validation_losses` are calculated. But if we use +`mach` to make predictions on new input features, these are based on retraining the model +on *all* provided data. + +````@example live_training +Xnew = ( + sepal_length = Float32[5.8, 5.8, 5.8], + sepal_width = Float32[4.0, 2.6, 2.7], + petal_length = Float32[1.2, 4.0, 4.1], + petal_width = Float32[0.2, 1.2, 1.0], +) + +predict_mode(mach, Xnew) ```` --- diff --git a/docs/src/common_workflows/live_training/notebook.unexecuted.ipynb b/docs/src/common_workflows/live_training/notebook.unexecuted.ipynb index fb86f8e7..43d014b5 100644 --- a/docs/src/common_workflows/live_training/notebook.unexecuted.ipynb +++ b/docs/src/common_workflows/live_training/notebook.unexecuted.ipynb @@ -20,7 +20,8 @@ "cell_type": "code", "source": [ "using Pkg\n", - "Pkg.activate(@__DIR__);\n", + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", "Pkg.instantiate();" ], "metadata": {}, @@ -29,7 +30,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -46,8 +47,10 @@ "source": [ "using MLJ\n", "using Flux\n", - "import RDatasets\n", - "import Optimisers" + "import Optimisers\n", + "using StableRNGs # for reproducibility across Julia versions\n", + "\n", + "stable_rng() = StableRNGs.StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -72,9 +75,9 @@ "outputs": [], "cell_type": "code", "source": [ - "iris = RDatasets.dataset(\"datasets\", \"iris\");\n", - "y, X = unpack(iris, ==(:Species), rng=123);\n", - "X = Float32.(X); # To be compatible with type of network network parameters" + "iris = load_iris() # a named-tuple of vectors\n", + "y, X = unpack(iris, ==(:target), rng=stable_rng())\n", + "X = fmap(column-> Float32.(column), X) # Flux prefers Float32 data" ], "metadata": {}, "execution_count": null @@ -105,7 +108,7 @@ " optimiser=Optimisers.Adam(0.01),\n", " batch_size=8,\n", " epochs=50,\n", - " rng=42,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -163,7 +166,34 @@ "cell_type": "code", "source": [ "mach = machine(iterated_model, X, y)\n", - "fit!(mach, force=true)" + "fit!(mach)\n", + "validation_losses" + ], + "metadata": {}, + "execution_count": null + }, + { + "cell_type": "markdown", + "source": [ + "Note that the wrapped model sets aside some data on which to make out-of-sample\n", + "estimates of the loss, which is how `validation_losses` are calculated. But if we use\n", + "`mach` to make predictions on new input features, these are based on retraining the model\n", + "on *all* provided data." + ], + "metadata": {} + }, + { + "outputs": [], + "cell_type": "code", + "source": [ + "Xnew = (\n", + " sepal_length = Float32[5.8, 5.8, 5.8],\n", + " sepal_width = Float32[4.0, 2.6, 2.7],\n", + " petal_length = Float32[1.2, 4.0, 4.1],\n", + " petal_width = Float32[0.2, 1.2, 1.0],\n", + ")\n", + "\n", + "predict_mode(mach, Xnew)" ], "metadata": {}, "execution_count": null @@ -184,11 +214,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/extended_examples/Boston.md b/docs/src/extended_examples/Boston.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/src/extended_examples/MNIST/Manifest.toml b/docs/src/extended_examples/MNIST/Manifest.toml deleted file mode 100644 index 29c5e94b..00000000 --- a/docs/src/extended_examples/MNIST/Manifest.toml +++ /dev/null @@ -1,2319 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.3" -manifest_format = "2.0" -project_hash = "3049fd46149696b9ac7df5214242bc2535d0a10e" - -[[deps.ARFFFiles]] -deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] -git-tree-sha1 = "e8c8e0a2be6eb4f56b1672e46004463033daa409" -uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" -version = "1.4.1" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.AtomsBase]] -deps = ["LinearAlgebra", "PeriodicTable", "Printf", "Requires", "StaticArrays", "Unitful", "UnitfulAtomic"] -git-tree-sha1 = "995c2b6b17840cd87b722ce9c6cdd72f47bab545" -uuid = "a963bdd2-2df7-4f54-a1ee-49d51e6be12a" -version = "0.3.5" - -[[deps.BFloat16s]] -deps = ["LinearAlgebra", "Printf", "Random", "Test"] -git-tree-sha1 = "2c7cc21e8678eff479978a0a2ef5ce2f51b63dff" -uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" -version = "0.5.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.40" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" - -[[deps.BufferedStreams]] -git-tree-sha1 = "4ae47f9a4b1dc19897d3743ff13685925c5202ec" -uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d" -version = "1.2.1" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "6c834533dc1fabd820c1db03c839bf97e45a3fab" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.14" - -[[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics"] -git-tree-sha1 = "b8c28cb78014f7ae81a652ce1524cba7667dea5c" -uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "5.3.5" - - [deps.CUDA.extensions] - ChainRulesCoreExt = "ChainRulesCore" - EnzymeCoreExt = "EnzymeCore" - SpecialFunctionsExt = "SpecialFunctions" - - [deps.CUDA.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.CUDA_Driver_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "dc172b558adbf17952001e15cf0d6364e6d78c2f" -uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.8.1+0" - -[[deps.CUDA_Runtime_Discovery]] -deps = ["Libdl"] -git-tree-sha1 = "38f830504358e9972d2a0c3e5d51cb865e0733df" -uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" -version = "0.2.4" - -[[deps.CUDA_Runtime_jll]] -deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "4ca7d6d92075906c2ce871ea8bba971fff20d00c" -uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.12.1+0" - -[[deps.CUDNN_jll]] -deps = ["Artifacts", "CUDA_Runtime_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "cbf7d75f8c58b147bdf6acea2e5bc96cececa6d4" -uuid = "62b44479-cb7b-5706-934f-f13b2eb2e645" -version = "9.0.0+1" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.0+2" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" -weakdeps = ["JSON", "RecipesBase", "SentinelArrays", "StructTypes"] - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - -[[deps.CategoricalDistributions]] -deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" -uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.15" - - [deps.CategoricalDistributions.extensions] - UnivariateFiniteDisplayExt = "UnicodePlots" - - [deps.CategoricalDistributions.weakdeps] - UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "291821c1251486504f6bae435227907d734e94d2" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.66.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "575cd02e080939a33b6df6c5853d14924c08e35b" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.23.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.Chemfiles]] -deps = ["AtomsBase", "Chemfiles_jll", "DocStringExtensions", "PeriodicTable", "Unitful", "UnitfulAtomic"] -git-tree-sha1 = "82fe5e341c793cb51149d993307da9543824b206" -uuid = "46823bd8-5fb3-5f92-9aa0-96921f3dd015" -version = "0.10.41" - -[[deps.Chemfiles_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f3743181e30d87c23d9c8ebd493b77f43d8f1890" -uuid = "78a364fa-1a3c-552a-b4bb-8fa0f9c1fcca" -version = "0.10.4+0" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.25.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.15.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - - [deps.CompositionsBase.weakdeps] - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.ComputationalResources]] -git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" -uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" -version = "0.3.2" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" - -[[deps.Conda]] -deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" -uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.10.0" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ContextVariablesX]] -deps = ["Compat", "Logging", "UUIDs"] -git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" -uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" -version = "0.1.3" - -[[deps.Contour]] -git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataDeps]] -deps = ["HTTP", "Libdl", "Reexport", "SHA", "Scratch", "p7zip_jll"] -git-tree-sha1 = "8ae085b71c462c2cb1cfedcb10c3c877ec6cf03f" -uuid = "124859b0-ceae-595e-8997-d05f6a7a8dfe" -version = "0.7.13" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "22c595ca4146c07b16bcf9c8bea86f731f7109d2" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.108" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarlyStopping]] -deps = ["Dates", "Statistics"] -git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" -uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" -version = "0.3.0" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FLoops]] -deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] -git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" -uuid = "cc61a311-1640-44b5-9fba-1b764f453329" -version = "0.2.1" - -[[deps.FLoopsBase]] -deps = ["ContextVariablesX"] -git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" -uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" -version = "0.1.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.11.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Flux]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "OneHotArrays", "Optimisers", "Preferences", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "Zygote"] -git-tree-sha1 = "a5475163b611812d073171583982c42ea48d22b0" -uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.14.15" - - [deps.Flux.extensions] - FluxAMDGPUExt = "AMDGPU" - FluxCUDAExt = "CUDA" - FluxCUDAcuDNNExt = ["CUDA", "cuDNN"] - FluxMetalExt = "Metal" - - [deps.Flux.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d3e63d9fa13f8eaa2f06f64949e2afc593ff52c2" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.10" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.9+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.1.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GPUCompiler]] -deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "Scratch", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "1600477fba37c9fc067b9be21f5e8101f24a8865" -uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.26.4" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.5" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.5+0" - -[[deps.GZip]] -deps = ["Libdl", "Zlib_jll"] -git-tree-sha1 = "0085ccd5ec327c077ec5b91a5f937b759810ba62" -uuid = "92fee26a-97fe-5a0c-ad85-20a5f3185b63" -version = "0.6.2" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.2+0" - -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] -git-tree-sha1 = "e856eef26cf5bf2b0f95f8f4fc37553c72c8641c" -uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.17.2" - - [deps.HDF5.extensions] - MPIExt = "MPI" - - [deps.HDF5.weakdeps] - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - -[[deps.HDF5_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] -git-tree-sha1 = "82a471768b513dc39e471540fdadc84ff80ff997" -uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.3+3" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.10.0+0" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IJulia]] -deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] -git-tree-sha1 = "47ac8cc196b81001a711f4b2c12c97372338f00c" -uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -version = "1.24.2" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" - -[[deps.ImageBase]] -deps = ["ImageCore", "Reexport"] -git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" -uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.7" - -[[deps.ImageCore]] -deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.2" - -[[deps.ImageShow]] -deps = ["Base64", "ColorSchemes", "FileIO", "ImageBase", "ImageCore", "OffsetArrays", "StackViews"] -git-tree-sha1 = "3b5344bcdbdc11ad58f3b1956709b5b9345355de" -uuid = "4e3cecfd-b093-5904-9786-8bbb286a6a31" -version = "0.3.8" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InternedStrings]] -deps = ["Random", "Test"] -git-tree-sha1 = "eb05b5625bc5d821b8075a77e4c421933e20c76b" -uuid = "7d512f48-7fb1-5a58-b986-67e6dc259f01" -version = "0.7.0" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterationControl]] -deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" -uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.48" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.7" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.14.0" - - [deps.JSON3.extensions] - JSON3ArrowExt = ["ArrowTypes"] - - [deps.JSON3.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.3+0" - -[[deps.JuliaNVTXCallbacks_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" -uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" -version = "0.2.1+0" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "db02395e4c374030c53dc28f3c1d33dec35f7272" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.19" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.2+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "839c82932db86740ae729779e610f07a1640be9a" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.6.3" -weakdeps = ["BFloat16s"] - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.29+0" - -[[deps.LLVMLoopInfo]] -git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" -uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" -version = "1.0.0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.7+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.3" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatinHypercubeSampling]] -deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" -uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.9.0" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LazyModules]] -git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" -uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" -version = "0.3.1" - -[[deps.LearnAPI]] -deps = ["InteractiveUtils", "Statistics"] -git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" -uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" -version = "0.1.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.11+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.49.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.27" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MAT]] -deps = ["BufferedStreams", "CodecZlib", "HDF5", "SparseArrays"] -git-tree-sha1 = "1d2dd9b186742b0f317f2530ddcbf00eebb18e96" -uuid = "23992714-dd62-5051-b70f-ba57cb901cac" -version = "0.10.7" - -[[deps.MLDatasets]] -deps = ["CSV", "Chemfiles", "DataDeps", "DataFrames", "DelimitedFiles", "FileIO", "FixedPointNumbers", "GZip", "Glob", "HDF5", "ImageShow", "JLD2", "JSON3", "LazyModules", "MAT", "MLUtils", "NPZ", "Pickle", "Printf", "Requires", "SparseArrays", "Statistics", "Tables"] -git-tree-sha1 = "aab72207b3c687086a400be710650a57494992bd" -uuid = "eb30cadb-4394-5ae3-aed4-317e484a6458" -version = "0.7.14" - -[[deps.MLFlowClient]] -deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] -git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" -uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" -version = "0.5.1" - -[[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "bd2072e9cd65be0a3cb841f3d8cda1d2cacfe5db" -uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.20.5" - -[[deps.MLJBalancing]] -deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] -git-tree-sha1 = "f02e28f9f3c54a138db12a97a5d823e5e572c2d6" -uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" -version = "0.1.4" - -[[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "aba2ffd56a9a97027b4102055dd9f909a6e35d12" -uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "1.3.0" -weakdeps = ["StatisticalMeasures"] - - [deps.MLJBase.extensions] - DefaultMeasuresExt = "StatisticalMeasures" - -[[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] -git-tree-sha1 = "d3dd87194ec96892bb243b65225a462c7ab16e66" -uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.4.2" - -[[deps.MLJFlow]] -deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] -git-tree-sha1 = "508bff8071d7d1902d6f1b9d1e868d58821f1cfe" -uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" -version = "0.5.0" - -[[deps.MLJFlux]] -deps = ["CategoricalArrays", "ColorTypes", "ComputationalResources", "Flux", "MLJModelInterface", "Metalhead", "ProgressMeter", "Random", "Statistics", "Tables"] -git-tree-sha1 = "72935b7de07a7f6b72fd49ecc7898dac79248d46" -uuid = "094fc8d1-fd35-5302-93ea-dabda2abf845" -version = "0.4.0" - -[[deps.MLJIteration]] -deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "1e909ee09417ebd18559c4d9c15febff887192df" -uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.6.1" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "d2a45e1b5998ba3fdfb6cfe0c81096d4c7fb40e7" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.9.6" - -[[deps.MLJModels]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "410da88e0e6ece5467293d2c76b51b7c6df7d072" -uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.16.17" - -[[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] -git-tree-sha1 = "efb9ec087ab9589afad0002e69fdd9cd38ef1643" -uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.8.6" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MLUtils]] -deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" -uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.4.4" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "4099bb6809ac109bfc17d521dad33763bcf026b7" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.1+1" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.11" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "ce0ca3dd147c43de175c5aff161315a424f4b8ac" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.3+1" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.MappedArrays]] -git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.2" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Metalhead]] -deps = ["Artifacts", "BSON", "ChainRulesCore", "Flux", "Functors", "JLD2", "LazyArtifacts", "MLUtils", "NNlib", "PartialFunctions", "Random", "Statistics"] -git-tree-sha1 = "5aac9a2b511afda7bf89df5044a2e0b429f83152" -uuid = "dbeba491-748d-5e0e-a39e-b530a07fa0cc" -version = "0.9.3" -weakdeps = ["CUDA"] - - [deps.Metalhead.extensions] - MetalheadCUDAExt = "CUDA" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.4" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.17" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NPZ]] -deps = ["FileIO", "ZipFile"] -git-tree-sha1 = "60a8e272fe0c5079363b28b0953831e2dd7b7e6f" -uuid = "15e1cf62-19b3-5cfa-8e77-841668bca605" -version = "0.4.3" - -[[deps.NVTX]] -deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "53046f0483375e3ed78e49190f1154fa0a4083a1" -uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.4" - -[[deps.NVTX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ce3269ed42816bf18d500c9f63418d4b0d9f5a3b" -uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" -version = "3.1.0+2" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OffsetArrays]] -git-tree-sha1 = "e64b4f5ea6b7389f6f046d13d4896a8f9c1ba71e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.0" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] -git-tree-sha1 = "963a3f28a2e65bb87a68033ea4a616002406037d" -uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.5" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenML]] -deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] -git-tree-sha1 = "6efb039ae888699d5a74fb593f6f3e10c7193e33" -uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" -version = "0.3.1" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.6+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.3" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3da7367955dcc5c54c1ba4d402ccdc09a1a3e046" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.13+1" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "6572fe0c5b74431aaeb0b18a4aa5ef03c84678be" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.3.3" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.PackageExtensionCompat]] -git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" -uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" -version = "1.0.2" -weakdeps = ["Requires", "TOML"] - -[[deps.PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.12" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartialFunctions]] -deps = ["MacroTools"] -git-tree-sha1 = "47b49a4dbc23b76682205c646252c0f9e1eb75af" -uuid = "570af359-4316-4cb7-8c74-252c00c2016b" -version = "1.2.0" - -[[deps.PeriodicTable]] -deps = ["Base64", "Unitful"] -git-tree-sha1 = "238aa6298007565529f911b734e18addd56985e1" -uuid = "7b2266bf-644c-5ea3-82d8-af4bbd25a884" -version = "1.2.1" - -[[deps.Pickle]] -deps = ["BFloat16s", "DataStructures", "InternedStrings", "Mmap", "Serialization", "SparseArrays", "StridedViews", "StringEncodings", "ZipFile"] -git-tree-sha1 = "e99da19b86b7e1547b423fc1721b260cfbe83acb" -uuid = "fbb45041-c46e-462f-888f-7c521cafbc2c" -version = "0.3.5" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.1.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.4.1" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.4" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyPrinting]] -git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" -uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.2" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.0" - -[[deps.PtrArrays]] -git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.0" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Random123]] -deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "4743b43e5a9c4a2ede372de7061eed81795b12e7" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.7.0" - -[[deps.RandomNumbers]] -deps = ["Random", "Requires"] -git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.5.3" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.2+0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.ScientificTypes]] -deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] -git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" -uuid = "321657f4-b219-11e9-178b-2701a2544e81" -version = "3.0.2" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.3" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShowCases]] -git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" -uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" -version = "0.1.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SoftGlobalScope]] -deps = ["REPL"] -git-tree-sha1 = "986ec2b6162ccb95de5892ed17832f95badf770c" -uuid = "b85f4697-e234-5449-a836-ec8e2f98b302" -version = "1.1.0" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.2" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.StableRNGs]] -deps = ["Random"] -git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" -uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.2" - -[[deps.StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.1" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "9ae599cd7529cfce7fea36cf00a62cfc56f0f37c" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.4" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.2" - -[[deps.StatisticalMeasures]] -deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] -git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" -uuid = "a19d573c-0a75-4610-95b3-7071388c7541" -version = "0.1.6" - - [deps.StatisticalMeasures.extensions] - LossFunctionsExt = "LossFunctions" - ScientificTypesExt = "ScientificTypes" - - [deps.StatisticalMeasures.weakdeps] - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - -[[deps.StatisticalMeasuresBase]] -deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] -git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" -uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" -version = "0.1.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "30b9236691858e13f167ce829490a68e1a597782" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.2.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.1" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StridedViews]] -deps = ["LinearAlgebra", "PackageExtensionCompat"] -git-tree-sha1 = "5b765c4e401693ab08981989f74a36a010aa1d8e" -uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" -version = "0.2.2" -weakdeps = ["CUDA"] - - [deps.StridedViews.extensions] - StridedViewsCUDAExt = "CUDA" - -[[deps.StringEncodings]] -deps = ["Libiconv_jll"] -git-tree-sha1 = "b765e46ba27ecf6b44faf70df40c57aa3a547dcb" -uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" -version = "0.3.7" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimerOutputs]] -deps = ["ExprTools", "Printf"] -git-tree-sha1 = "5a13ae8a41237cff5ecf34f73eb1b8f42fff6531" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.24" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "5d54d076465da49d6746c647022f3b3674e64156" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.8" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.80" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.20.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulAtomic]] -deps = ["Unitful"] -git-tree-sha1 = "903be579194534af1c4b4778d1ace676ca042238" -uuid = "a7773ee8-282e-5fa2-be4e-bd808c38a91a" -version = "1.0.0" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.4" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.VersionParsing]] -git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" -uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" -version = "1.3.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.31.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.7+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.1.1+0" - -[[deps.Xorg_libSM_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] -git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.ZMQ]] -deps = ["FileWatching", "PrecompileTools", "Sockets", "ZeroMQ_jll"] -git-tree-sha1 = "8ac0d6e982660047f4ec5ae462acf4b92260f4b3" -uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" -version = "1.2.3" - -[[deps.ZeroMQ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "libsodium_jll"] -git-tree-sha1 = "42f97fb27394378591666ab0e9cee369e6d0e1f9" -uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" -version = "4.3.5+0" - -[[deps.ZipFile]] -deps = ["Libdl", "Printf", "Zlib_jll"] -git-tree-sha1 = "f492b7fe1698e623024e873244f10d89c95c340a" -uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea" -version = "0.10.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.70" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.5" - -[[deps.cuDNN]] -deps = ["CEnum", "CUDA", "CUDA_Runtime_Discovery", "CUDNN_jll"] -git-tree-sha1 = "1f6a185a8da9bbbc20134b7b935981f70c9b26ad" -uuid = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" -version = "1.3.1" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.43.0+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaec_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "46bf7be2917b59b761247be3f317ddf75e50e997" -uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.1.2+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.43+1" - -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/docs/src/extended_examples/MNIST/Project.toml b/docs/src/extended_examples/MNIST/Project.toml deleted file mode 100644 index 94a789a2..00000000 --- a/docs/src/extended_examples/MNIST/Project.toml +++ /dev/null @@ -1,11 +0,0 @@ -[deps] -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" -IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458" -MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -MLJFlux = "094fc8d1-fd35-5302-93ea-dabda2abf845" -MLJIteration = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" diff --git a/docs/src/extended_examples/MNIST/README.md b/docs/src/extended_examples/MNIST/README.md index b68a07e7..6af70b66 100644 --- a/docs/src/extended_examples/MNIST/README.md +++ b/docs/src/extended_examples/MNIST/README.md @@ -1,15 +1,17 @@ # Contents -| file | description | -|:----------------------------|:---------------------------------------------------------| -| `notebook.ipynb` | Juptyer notebook (executed) | -| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | -| `notebook.md` | static markdown (included in MLJFlux.jl docs) | -| `notebook.jl` | executable Julia script annotated with comments | -| `generate.jl` | *maintainers only:* execute to generate first 3 from 4th | +| file | description | +|:----------------------------|:-------------------------------------------------------------| +| `notebook.unexecuted.ipynb` | Jupyter notebook (unexecuted) | +| `notebook.md` | static markdown (included in MLJFlux.jl docs) | +| `notebook.jl` | executable Julia script annotated with comments | +| `generate.jl` | *maintainers only:* execute to generate MD and IPYNB from JL | +| | | # Important Scripts or notebooks in this folder cannot be reliably executed without the accompanying -Manifest.toml and Project.toml files. +Manifest.toml and Project.toml files. Relative to the directory of this README.md, you can +try looking for these files at ../../../docs/ + diff --git a/docs/src/extended_examples/MNIST/notebook.ipynb b/docs/src/extended_examples/MNIST/notebook.ipynb deleted file mode 100644 index 617be38e..00000000 --- a/docs/src/extended_examples/MNIST/notebook.ipynb +++ /dev/null @@ -1,2111 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Using MLJ to classifiy the MNIST image dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This tutorial is available as a Jupyter notebook or julia script\n", - "[here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/extended_examples/MNIST)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m project at `~/GoogleDrive/Julia/MLJ/MLJFlux/docs/src/extended_examples/MNIST`\n" - ] - } - ], - "source": [ - "using Pkg\n", - "const DIR = @__DIR__\n", - "Pkg.activate(DIR)\n", - "Pkg.instantiate()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Julia version** is assumed to be 1.10.*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "using MLJ\n", - "using Flux\n", - "import MLJFlux\n", - "import MLUtils\n", - "import MLJIteration # for `skip`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If running on a GPU, you will also need to `import CUDA` and `import cuDNN`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "using Plots\n", - "gr(size=(600, 300*(sqrt(5)-1)));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Basic training" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Downloading the MNIST image dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import MLDatasets: MNIST\n", - "\n", - "ENV[\"DATADEPS_ALWAYS_ACCEPT\"] = true\n", - "images, labels = MNIST(split=:train)[:];" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In MLJ, integers cannot be used for encoding categorical data, so we\n", - "must force the labels to have the `Multiclass` [scientific\n", - "type](https://juliaai.github.io/ScientificTypes.jl/dev/). For\n", - "more on this, see [Working with Categorical\n", - "Data](https://alan-turing-institute.github.io/MLJ.jl/dev/working_with_categorical_data/)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "labels = coerce(labels, Multiclass);\n", - "images = coerce(images, GrayImage);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Checking scientific types:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "@assert scitype(images) <: AbstractVector{<:Image}\n", - "@assert scitype(labels) <: AbstractVector{<:Finite}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Looks good." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For general instructions on coercing image data, see [Type coercion\n", - "for image\n", - "data](https://juliaai.github.io/ScientificTypes.jl/dev/#Type-coercion-for-image-data)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "28×28 Array{Gray{Float32},2} with eltype Gray{Float32}:\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) … Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) … Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) … Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " ⋮ ⋱ \n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) … Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) … Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)\n", - " Gray{Float32}(0.0) Gray{Float32}(0.0) Gray{Float32}(0.0)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "images[1]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We start by defining a suitable `Builder` object. This is a recipe\n", - "for building the neural network. Our builder will work for images of\n", - "any (constant) size, whether they be color or black and white (ie,\n", - "single or multi-channel). The architecture always consists of six\n", - "alternating convolution and max-pool layers, and a final dense\n", - "layer; the filter size and the number of channels after each\n", - "convolution layer is customisable." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "import MLJFlux\n", - "struct MyConvBuilder\n", - " filter_size::Int\n", - " channels1::Int\n", - " channels2::Int\n", - " channels3::Int\n", - "end\n", - "\n", - "function MLJFlux.build(b::MyConvBuilder, rng, n_in, n_out, n_channels)\n", - " k, c1, c2, c3 = b.filter_size, b.channels1, b.channels2, b.channels3\n", - " mod(k, 2) == 1 || error(\"`filter_size` must be odd. \")\n", - " p = div(k - 1, 2) # padding to preserve image size\n", - " init = Flux.glorot_uniform(rng)\n", - " front = Chain(\n", - " Conv((k, k), n_channels => c1, pad=(p, p), relu, init=init),\n", - " MaxPool((2, 2)),\n", - " Conv((k, k), c1 => c2, pad=(p, p), relu, init=init),\n", - " MaxPool((2, 2)),\n", - " Conv((k, k), c2 => c3, pad=(p, p), relu, init=init),\n", - " MaxPool((2 ,2)),\n", - " MLUtils.flatten)\n", - " d = Flux.outputsize(front, (n_in..., n_channels, 1)) |> first\n", - " return Chain(front, Dense(d, n_out, init=init))\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Notes.**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- There is no final `softmax` here, as this is applied by default in all MLJFLux\n", - " classifiers. Customisation of this behaviour is controlled using using the `finaliser`\n", - " hyperparameter of the classifier.\n", - "\n", - "- Instead of calculating the padding `p`, Flux can infer the required padding in each\n", - " dimension, which you enable by replacing `pad = (p, p)` with `pad = SamePad()`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now define the MLJ model." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mFor silent loading, specify `verbosity=0`. \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "import MLJFlux ✔\n" - ] - }, - { - "data": { - "text/plain": [ - "ImageClassifier(\n", - " builder = MyConvBuilder(3, 16, 32, 32), \n", - " finaliser = NNlib.softmax, \n", - " optimiser = Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), \n", - " loss = Flux.Losses.crossentropy, \n", - " epochs = 10, \n", - " batch_size = 50, \n", - " lambda = 0.0, \n", - " alpha = 0.0, \n", - " rng = 123, \n", - " optimiser_changes_trigger_retraining = false, \n", - " acceleration = CPU1{Nothing}(nothing))" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ImageClassifier = @load ImageClassifier\n", - "clf = ImageClassifier(\n", - " builder=MyConvBuilder(3, 16, 32, 32),\n", - " batch_size=50,\n", - " epochs=10,\n", - " rng=123,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add Flux options `optimiser=...` and `loss=...` in the above constructor\n", - "call. At present, `loss` must be a Flux-compatible loss, not an MLJ measure. To run on a\n", - "GPU, add to the constructor `acceleration=CUDALib()` and omit `rng`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For illustration purposes, we won't use all the data here:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "501:1000" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train = 1:500\n", - "test = 501:1000" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Binding the model with data in an MLJ machine:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "mach = machine(clf, images, labels);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Training for 10 epochs on the first 500 images:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mTraining machine(ImageClassifier(builder = MyConvBuilder(3, 16, 32, 32), …), …).\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 2.291\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 2.208\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 2.049\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 1.685\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 1.075\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 0.628\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 0.4639\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 0.361\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 0.2921\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mLoss is 0.2478\n" - ] - } - ], - "source": [ - "fit!(mach, rows=train, verbosity=2);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Inspecting:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(training_losses = Float32[2.3242702, 2.2908378, 2.20822, 2.0489829, 1.6850392, 1.0751165, 0.6279615, 0.46388212, 0.36103815, 0.29207793, 0.2478443],)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "report(mach)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(chain = Chain(Chain(Chain(Conv((3, 3), 1 => 16, relu, pad=1), MaxPool((2, 2)), Conv((3, 3), 16 => 32, relu, pad=1), MaxPool((2, 2)), Conv((3, 3), 32 => 32, relu, pad=1), MaxPool((2, 2)), flatten), Dense(288 => 10)), softmax),)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "chain = fitted_params(mach)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Vector{Float32}:\n", - " 0.011803599\n", - " 0.05579675\n", - " 8.461591f-5\n", - " 0.013422165\n", - " -0.001925053\n", - " 0.011568692\n", - " -0.00051727734\n", - " -0.0003228416\n", - " 0.03614383\n", - " 0.06365696\n", - " -0.0005846103\n", - " -0.004092362\n", - " 0.0036211032\n", - " 0.0031117066\n", - " 0.02764553\n", - " 0.05152524" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Flux.params(chain)[2]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Adding 20 more epochs:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mUpdating machine(ImageClassifier(builder = MyConvBuilder(3, 16, 32, 32), …), …).\n", - "\u001b[33mOptimising neural net: 100%[=========================] Time: 0:00:30\u001b[39m\n" - ] - } - ], - "source": [ - "clf.epochs = clf.epochs + 20\n", - "fit!(mach, rows=train);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Computing an out-of-sample estimate of the loss:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.36284237158113225" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "predicted_labels = predict(mach, rows=test);\n", - "cross_entropy(predicted_labels, labels[test])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or to fit and predict, in one line:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PerformanceEvaluation object with these fields:\n", - " model, measure, operation,\n", - " measurement, per_fold, per_observation,\n", - " fitted_params_per_fold, report_per_fold,\n", - " train_test_rows, resampling, repeats\n", - "Extract:\n", - "┌──────────────────────┬───────────┬─────────────┐\n", - "│\u001b[22m measure \u001b[0m│\u001b[22m operation \u001b[0m│\u001b[22m measurement \u001b[0m│\n", - "├──────────────────────┼───────────┼─────────────┤\n", - "│ LogLoss( │ predict │ 0.363 │\n", - "│ tol = 2.22045e-16) │ │ │\n", - "└──────────────────────┴───────────┴─────────────┘\n" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "evaluate!(mach,\n", - " resampling=Holdout(fraction_train=0.5),\n", - " measure=cross_entropy,\n", - " rows=1:1000,\n", - " verbosity=0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Wrapping the MLJFlux model with iteration controls" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Any iterative MLJFlux model can be wrapped in *iteration controls*,\n", - "as we demonstrate next. For more on MLJ's `IteratedModel` wrapper,\n", - "see the [MLJ\n", - "documentation](https://alan-turing-institute.github.io/MLJ.jl/dev/controlling_iterative_models/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The \"self-iterating\" classifier, called `iterated_clf` below, is for\n", - "iterating the image classifier defined above until one of the\n", - "following stopping criterion apply:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- `Patience(3)`: 3 consecutive increases in the loss\n", - "- `InvalidValue()`: an out-of-sample loss, or a training loss, is `NaN`, `Inf`, or `-Inf`\n", - "- `TimeLimit(t=5/60)`: training time has exceeded 5 minutes\n", - "\n", - "These checks (and other controls) will be applied every two epochs\n", - "(because of the `Step(2)` control). Additionally, training a\n", - "machine bound to `iterated_clf` will:\n", - "\n", - "- save a snapshot of the machine every three control cycles (every six epochs)\n", - "- record traces of the out-of-sample loss and training losses for plotting\n", - "- record mean value traces of each Flux parameter for plotting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For a complete list of controls, see [this\n", - "table](https://alan-turing-institute.github.io/MLJ.jl/dev/controlling_iterative_models/#Controls-provided)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Wrapping the classifier" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some helpers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To extract Flux params from an MLJFlux machine" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "parameters(mach) = vec.(Flux.params(fitted_params(mach)));" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To store the traces:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Any[]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "losses = []\n", - "training_losses = []\n", - "parameter_means = Float32[];\n", - "epochs = []" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To update the traces:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "update_epochs (generic function with 1 method)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "update_loss(loss) = push!(losses, loss)\n", - "update_training_loss(losses) = push!(training_losses, losses[end])\n", - "update_means(mach) = append!(parameter_means, mean.(parameters(mach)));\n", - "update_epochs(epoch) = push!(epochs, epoch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The controls to apply:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "save_control =\n", - " MLJIteration.skip(Save(joinpath(tempdir(), \"mnist.jls\")), predicate=3)\n", - "\n", - "controls=[\n", - " Step(2),\n", - " Patience(3),\n", - " InvalidValue(),\n", - " TimeLimit(5/60),\n", - " save_control,\n", - " WithLossDo(),\n", - " WithLossDo(update_loss),\n", - " WithTrainingLossesDo(update_training_loss),\n", - " Callback(update_means),\n", - " WithIterationsDo(update_epochs),\n", - "];" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The \"self-iterating\" classifier:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ProbabilisticIteratedModel(\n", - " model = ImageClassifier(\n", - " builder = MyConvBuilder(3, 16, 32, 32), \n", - " finaliser = NNlib.softmax, \n", - " optimiser = Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), \n", - " loss = Flux.Losses.crossentropy, \n", - " epochs = 30, \n", - " batch_size = 50, \n", - " lambda = 0.0, \n", - " alpha = 0.0, \n", - " rng = 123, \n", - " optimiser_changes_trigger_retraining = false, \n", - " acceleration = CPU1{Nothing}(nothing)), \n", - " controls = Any[Step(2), Patience(3), InvalidValue(), TimeLimit(Dates.Millisecond(300000)), IterationControl.Skip{Save{typeof(Serialization.serialize)}, IterationControl.var\"#8#9\"{Int64}}(Save{typeof(Serialization.serialize)}(\"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/mnist.jls\", Serialization.serialize), IterationControl.var\"#8#9\"{Int64}(3)), WithLossDo{IterationControl.var\"#20#22\"}(IterationControl.var\"#20#22\"(), false, nothing), WithLossDo{typeof(update_loss)}(update_loss, false, nothing), WithTrainingLossesDo{typeof(update_training_loss)}(update_training_loss, false, nothing), Callback{typeof(update_means)}(update_means, false, nothing, false), WithIterationsDo{typeof(update_epochs)}(update_epochs, false, nothing)], \n", - " resampling = Holdout(\n", - " fraction_train = 0.7, \n", - " shuffle = false, \n", - " rng = Random._GLOBAL_RNG()), \n", - " measure = LogLoss(tol = 2.22045e-16), \n", - " weights = nothing, \n", - " class_weights = nothing, \n", - " operation = MLJModelInterface.predict, \n", - " retrain = false, \n", - " check_measure = true, \n", - " iteration_parameter = nothing, \n", - " cache = true)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "iterated_clf = IteratedModel(\n", - " clf,\n", - " controls=controls,\n", - " resampling=Holdout(fraction_train=0.7),\n", - " measure=log_loss,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Binding the wrapped model to data:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "mach = machine(iterated_clf, images, labels);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Training" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mTraining machine(ProbabilisticIteratedModel(model = ImageClassifier(builder = MyConvBuilder(3, 16, 32, 32), …), …), …).\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mNo iteration parameter specified. Using `iteration_parameter=:(epochs)`. \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 2.2247422992833092\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 1.9681479167178544\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mSaving \"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/mnist1.jls\". \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 1.220910971646785\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.5940933327640742\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.46833501799372196\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mSaving \"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/mnist2.jls\". \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.4241402839593314\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.40840895980242126\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.404754883332919\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mSaving \"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/mnist3.jls\". \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.4097772917650752\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.420399235463716\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.43216415903189187\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mfinal loss: 0.43216415903189187\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mfinal training loss: 0.043363843\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mStop triggered by Patience(3) stopping criterion. \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mTotal of 22 iterations. \n" - ] - } - ], - "source": [ - "fit!(mach, rows=train);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Comparison of the training and out-of-sample losses:" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/loss.png\"" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "plot(\n", - " epochs,\n", - " losses,\n", - " xlab = \"epoch\",\n", - " ylab = \"cross entropy\",\n", - " label=\"out-of-sample\",\n", - ")\n", - "plot!(epochs, training_losses, label=\"training\")\n", - "\n", - "savefig(joinpath(tempdir(), \"loss.png\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Evolution of weights" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFyCAIAAACm2zNGAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd3xTVf8H8HNH9mjTRVs6aFktZW+QPRUFBAEVER4VUZYoKqDIgwwRfUR8/DErIKKobJmPIEuGRWiBUlo2lLbQPTNvcu89vz9OGmLKpk3a5vt++fKV3Nwk34Q0n5xzzzmXwhgjAAAAwFvRni4AAAAA8CQIQnB38fHxr7322vXr1z1dCABV67E/6p9//vlbb72l1+uroirgThCE3mj+/PnsPZw5c4bs8+eff65duzYvL8+zpdZimzdvjo+Pt9lsni7E2z32R/23336Lj483m8333+3o0aPx8fFZWVmPWyCocqynCwAeIIqiIAgRERENGzZ0uUmj0XikJC80d+7clJSUl19+WSKReLoWr9a0adPevXv7+PhU0eP/9NNP8fHxe/fuDQsLq6KnAE8IgtB7vfDCC19//bWnqwDAwz766KOPPvrI01UAT4IgBA+F5/nk5GSVShUTE+O8PS8vLzMzMzw8PCgoCCGUnp5eWFgYFBQUHh7uvFtGRkZ+fn5AQEBkZOS9nuLs2bMIoZYtW5aWlu7atevWrVvBwcHPPfecn5+fy55Go/Ho0aM3b94sKSmpU6dOjx496tWr57yDIAhnz55VKpWxsbHFxcV79uy5detWx44du3XrRl7LiRMnrl27lpOTo9FoOnTo0KZNG5enSEtLM5vNrVq1slqtu3fvvnHjRlBQ0KBBg3x9fckOiYmJCQkJPM/37NmzZcuWd33Hjh07du7cOY7joqOj+/Xr52htm0ymCxcukC41UidCSCqVNmvWzHF3juMOHTp08eJFQRAaNWrUt29fuVzu/PinT59mWbZ58+YGg2HPnj0ZGRlxcXHPPPPMXd/b1NRUi8XSunVri8Wye/fu9PT0OnXqDB48WKvVkh1Onjx54sQJQRB69+7dvHnzu76cI0eOpKSkWK3W+vXr9+vXT61Wu+xTXFx8/PjxmzdvGgyG8PDwnj17hoSEOO9gNpvT0tJ8fX3r16+fm5u7e/fu/Pz8qKioAQMGVHw0Zy4fM8c7gDFu0KCBozFntVpTUlI0Gk2jRo0cu2GMExMTT548aTAYwsLC+vXrFxgY6Pzg165dKygoiIuLc64BY3zs2LGkpCSaptu3b9+xY8f8/PyMjIywsLA6depUfHN+//33S5cuyeXyvn37Oj/7mTNn8vPzEUJXrlzx9/cnG5s1ayaVSskdDx48eO3aNYPBEBAQ0KhRow4dOrAsfC27HQbeZ86cOQih99577z77jBw5EiGUkJBArhYUFCCE2rdv77Lb4sWLEULffvstuXrq1CmpVBoYGHjr1i3HPpmZmQEBATKZLCkp6T7P6OPjo9Pp/vjjD51O5/h86nS6Xbt2Oe/25ZdfymQy588wTdOTJ08WBMGxT1FREUKoVatWmzZtcny7TZ48GWN84MAB58cn+vTpU1hY6PwsTZs2RQidOHEiKirKsZufn9+pU6eMRuMLL7zg2EhR1Jw5c1xey99//924cWPnpwgICNi+fTu59fTp0xX/EsPCwhx3//33311+SYSHhx87dsz5KWQyWUhIyB9//BEQEED2GT58+L3eW/LVfOrUqYiICMdjBgYGnjlzRq/XDx482PnlLFiwwOXux48fb9CggXM9gYGBe/bscd7nvffec/kGl0ql8+fPd97n3LlzCKFBgwZ9//33zrkeFhaWlpZ2r+Ixxn/88QdC6K233nJsSU9PJ/f9+uuvHRv/97//IYQmTpzo2HL9+vWOHTs6V6VUKpcuXer84C4fdYxxWVlZv379nO/1/PPPL1q0CCG0aNEix27t27cnHxLyaSEYhvnPf/7j2Mfl5wuRmZmJMT527Fh0dLTLTV26dLnP+wCqCAShN6q6IHRs6d69O8/zGGObzdalSxeE0LJly+5flY+Pj1wu9/X1feeddy5evJiRkfH1119LpVK5XO78LfnRRx+99dZbu3btSk1NvXz58saNG2NjY12+EEkQBgQEKJXKqVOn/v7773/99deRI0cwxps3bx48ePCGDRtOnz59/fr1/fv39+/fHyE0ZMgQ52LIV1t4ePjIkSMPHTqUlJQ0ceJEhFCTJk1ef/31xo0bb968OSUlZc2aNVqtlqIo0johUlNT1Wq1QqH49NNPExMTL126tGLFCl9fX6lUmpiYiDE2Go2JiYkkWo4cOZKYmJiYmHju3Dly98OHD7Ms6+Pjs2jRorNnz6ampv7nP/9RKBRarfb69euOZ5HJZGq12tfX980339y1a1dCQsIff/xxr/eWBGF4ePjo0aMPHz6cmJg4btw4hFCLFi1effXVJk2abNmyJSUl5bvvvlOr1TRNp6SkOO6bnJysVCqVSuW8efOSkpIuXry4dOlSHx8fmUx29uxZx26vv/761KlT9+3bd+nSpbS0tDVr1pAs37Rpk2MfEoRhYWEqleqzzz47efLk8ePHhw4dihDq3LnzfT4bJpNJLpfXr1/fseW7775DCNE0PWDAAMfGDz74ACG0detWcjUvLy8sLIxhmAkTJiQkJFy5cmXDhg3kp4BzVRWDkJTUp0+fEydO5OTk7N27NyYmJjg4+K5BGBkZ+eyzz+7du/fcuXPffPONQqFwfgNPnz49ZMgQhNCSJUsSy3Ecx/N8WFiYRCL56quvLl68mJ2dnZSUtGLFCucUB24DQeiNSBAGBAQ0+yfnP/LHDkJRFMlf/r///W+M8fTp0xFCw4YNe2BVpIPLpVmzYMEChNCIESPuc8dbt26p1eqoqCjHFhKECKFZs2Y98HltNlubNm0oisrIyHBsJEHoUgzpAvXz8ysoKHBs/Pzzz12eqE+fPgihX375xfm+v//+O0Lo2WefdWwhHaFlZWXOu4mi2KRJE5qmDx8+7Lx99erVCKFx48Y5tpBmsfOW+yBB+Morrzg/UVxcHEIoMDCwuLjYsZ18NubNm+fYQvqTt2zZ4vyAO3bsqPjrwcX58+cpiurWrZtjCwlClxyyWq0knJx7ESrq2bMnQsjxU+Cll15SKpWDBw9Wq9VWq5VsbNWqFcMwjsb9hAkTEEJz5851fpyLFy9KpdKGDRs6trh81JOSksiPBrPZ7Njn2rVrZExTxSB8+umnRVF0bPzkk09c3kDym2Pv3r0uZZCG5n1eMnAbmD7hvcxmc8E/GY3GJ39YiqJWr14dGRk5f/78Tz755D//+U90dPSqVase8u7vvfee89UJEybI5fJdu3bxPF9xZ6vVWlxcrFAomjdvfuPGDZLWDgzDvP/++/d5LlEUi4uL9Xp99+7dMcaJiYkuO7z77rvOV7t27YoQGjVqlONgj2PjjRs3yNWcnJz9+/fXr1//pZdecr5v//79o6KiDhw4YLVa71NSUlJSWlpaly5dunfv7rx9zJgxCoWCdP05+/DDD+/zaPd5ORRFkZb6mDFjHAc+K76cjIyMI0eOxMbGkkaSw8CBA+vWrbtv3z5BECo+kcViKS4uDg0NjYiIOHXqlMutkZGRw4YNc1yVSCQkax29nXfVu3dvhNDBgwcRQhjjw4cPd+3adcCAAQaD4e+//0YIFRYWJicnt2rVihxUFkXx559/lkqlpJno0Lhx4549e165cuXq1at3faJdu3YhhN566y3nXs3o6OiBAwfedf+pU6dSFOW4Sn4GOd7AeyFFpqamunxogUfAUVnvNW7cuCoaNarT6TZu3Ni1a9fPPvtMIpGsX7/+4cemu4zU8PHxiYqKunDhQnp6OulL5Hl++fLlP//8c3p6ek5OjvPOhYWFjgNmCKHQ0NC7Pu/OnTuXLVt2/vz5nJwc53wtLCx02dNlegkZZHHXjY5ZaGTID03TM2bMcHk0QRAsFktubq7L8T9n5O56vb7i3eVy+a1btwRBYBiGbJFKpRUPMt3HY78cjHHFehBCRqOxoKCADB4xmUyLFy/eunVrRkaGy5e7yWQiA4LuWgZCiDyCy7+mi969e3/yyScHDhx44403UlJScnJypk6dSlLnwIEDXbp0OXjwoCiKZAtC6MaNGyUlJf7+/qSN6yw3NxchdPPmTZcDn8Tly5cRQqS/3VlcXNzWrVsr7u88NAYhRIbzkKe4j8DAwOeff/63336rV69ev379evbs+fTTT1d8Z4B7QBCCKtG4ceOgoKCsrKwWLVqQHqSHoVQqVSqVy8bAwMALFy441u94+eWXN2/eHBkZOXTo0Lp16+p0OoZhli5deu7cOZdWo3MoOnz77bdTpkzx9fUdOHBggwYNdDqdTCbbt2/fli1bKjY6FQqF81Xyw/+uG3H5mr0lJSUIodzc3E2bNrk8Gsuy0dHRd23aOpSWliKEbt68WfHuOp1Op9NZrVZHAf7+/jT9CJ06LpWT+z7My8nOzq5Yj0wmi46OJgsC8Dzfr1+/48ePx8TEvPLKK8HBwTqdjqKo+fPnZ2Zmurxk51B0rgTfd93jdu3a+fr6HjhwAGN84MABhFCfPn2io6NJO3v27NlkI2k4ovJ30mQyVawcIRQdHe3cjHNmsVgQQhV/Qt3rx9xd39X7vxbi119//eqrr9atW7dt27Zt27YhhNq2bbt8+fK2bds+8L6gckEQgodC/rwr9oMZDIa77v/mm29mZWUFBQUlJiYuWLCAHDh5IJPJpNfrXSb1k4YC+Ro6derU5s2b27Rpc/ToUecvoIfseuU4btasWVqt9vTp087DQckBm0pBJiR06dJl9+7dj333YcOGrVy5srJKehKknp49e5Jv6nvZuXPn8ePHn3nmmZ07dzoarAih2bNnV1YlDMN069Ztx44dKSkpBw4c8Pf3b9GiBUKod+/ea9eu1ev1Bw4ckMlkTz31lHPlYWFhpIX38Ein5e3bt12237p1qxJehhOZTDZz5syZM2feuHHj4MGDv/766/79+5955pkLFy7c9TccqDpwjBA8FF9fX4VCUbHzKjU1teLOy5cv37RpU8eOHVNSUiIjI2fPnk0O7TwMMlTBoaCgID09XaPRkAmIKSkpCKFnn33WOQUNBsNDJllGRkZZWVmbNm2cU7Dikz6JVq1aURR18uTJB66dRgZfuLSWWrdujRA6fvx4ZdXzhEg9f//9912PBTqQf5chQ4Y4p2BWVtb9ezsfFWnt/f7770ePHu3duzf5cda7d2+e59evX3/16tXOnTs7PhhRUVE6ne7q1asP7KV0QRpkLp9YjPHDf4Zd3PUf2llUVNQbb7zxxx9/DBo0qKCg4OjRo4/3ROCxQRCCh0JRVFRU1K1btxyLkSKEUlNTt2zZ4rJnSkrK+++/r9Ppfv3116CgoB9//JGm6dGjRz/koIAvv/zSuVtp8eLFVqv1hRdeIN+w5GDStWvXnO+ycOHCh1z4OCgoiKKomzdvOn8r7d2798iRIw9z94cREhLyzDPPFBQUfPHFFxVvLS4udlyuW7cuQujmzZvOO7Ru3bply5apqalr1qy5/93dIyIiom/fvtnZ2WQW3b3queu/y8yZMyu3GBKE33zzTVlZWa9evcjGXr16URQ1d+5c5NQvihBiGGbMmDEY42nTplXsqLzPO/nCCy+o1eqff/7Z+aP+008/JScnP17Z5B86MzPTeaPBYKj4U4kMwrp/5zmoCtA1Ch7WqFGjPv744+eff37OnDl169Y9ffr0woULGzZsmJaW5tjHYDCMGDHCYrH88ssvpA3XtWvX2bNnz5o1a/To0bt3777XgRlCoVCcOXNm5MiRb7/9tlKp3Lx581dffaXVaj/99FOyQ8eOHcmXVGRk5MCBA3me/+WXX1atWhUVFfXAcXoIIR8fnzZt2iQmJr744ouTJ09Wq9UHDhz47LPPGjdufOnSpSd6d5wsXbq0Q4cOs2bNSk5OHjJkSHR0dFFR0bVr17Zs2aJUKvfs2UN269Chw86dO0ePHj106FCFQqHRaCZMmEBR1Pfff9+1a9c333zzr7/+6tevX2RkZF5e3uXLl3/99ddWrVrFx8dXVp0Pafny5R07dpw+ffqZM2cGDRoUHR1dUFBw7dq1TZs2+fv7//bbbwihHj16MAzzzTff+Pn59ejRw2g0fvfdd7t37w4ODq7ERmGTJk1CQkKys7NR+eBMhFBQUFCzZs3IxAznIEQIzZkzZ9++fevWrcvIyBg9enTjxo2NRmN6evquXbsuXbp0r14Ef3//xYsXjxs3rkuXLq+88kpUVNSZM2e2bt367LPPPvADfFcdOnRACM2ePfvGjRtkMYcJEyacOHFi9OjRY8aMadeuXWRkpMVi+f3339etWxcYGNi3b99HfQrwpDwxZwN42GNMqMcYcxw3YsQIxyeHYZjZs2e7zCN89dVXEUJTp051fihBEMjftvOKGxWRlWVOnjzpPKgyPDz8+PHjzrvt2LHDediCTqfbsmXLoEGDEELnz58n+zhWlqn4LJcuXXIe5sey7L///e8vv/wSIbR8+XLHbmQeoV6vd77vvHnzEEKrVq1y3kgOQfXt29d5440bNyqudhYSEkLau4TJZHr99dcdr8V5ZZlz586RuQ3O6tWr9/333zv2ISvL3Of9dEZeMsdxzhv//e9/I4TWrVvnvPH8+fPon/MdMcbXrl1zWWkFIRQaGrp48WLHPqtXr3burw4NDf3zzz9btWqFECotLXW8LoTQoEGDXMojk0A2b978wBdCPpaRkZHOG8mUG41G45hQ6FBUVDR69GjnDluEkK+vL1lmyPkxnT/qGONff/3VMYYzLi5u+/bt8+fPRwjFx8c79iGjwHJzc53vSPLVeZo/xvjzzz8PDQ11FJCZmZmUlFRx8HCzZs3uv/oSqCIUhjPUex+9Xl9WVqbRaBxLTVZUXFxsMpmCgoJczo1w7ty55ORkhULx1FNPhYSElJaWkkkLWq1WFEUyFSw8PNzlXkajMTc3l2VZ5yW+XPj6+tI0XVRUZLVajx49mpWVFRIS0r17d5cF1RBCZWVliYmJWVlZwcHBXbt2JQcvTSZTWFgYWcKRVCKTyUivlAue5xMTEy9fvuzr69u5c+eAgICSkpKioiLyKsg+WVlZVqu1Xr16zsMyyW6BgYHOw3lsNltmZqZCoXBZVxMhdOvWrVOnThUXFwcGBkZERDRt2vSugzz1en1+fn7FN+fatWvJycmlpaV16tSJjo52WeX1xo0bNE3fZ+1WZ5mZmTabLSoqyrlBU1xcXFxcHBQU5LzGptVqzcrKUiqVZCEVlwdJTEwsKSkJDAysV69eXFycS/OooKDg9OnTOTk5ERERTz31lEQiuXXrFsdxjrfxXg9eVFRElo2tOGbYBanZ5d0uKysrKCiQSqX3Or1DQUHBiRMn8vPz/f39Q0NDW7Ro4fz5vNdHHSFUWloqkUjIMNcxY8asW7du3759jhYbeXWRkZHOQUs+D3d9Ay0WS05OjiiKERERZDm6GzduXLx4MS8vz8/PLzo6mixxANwPghBUF44g9HQhALi6detWXFycKIq3b9++//rgoCaCY4QAAPAPO3fu/Omnn0aMGNGgQQOLxXL27NnPP/+8tLT0008/hRSslSAIAQDgH2Qy2bZt2zZu3OjYIpfLP/nkk1mzZnmwKlB1IAhBdfHNN988xpA8ACpdv379ioqKTp06lZ2dbbFYQkJCOnXq5LwiK6hl4BghAAAArwYT6gEAAHg1CEIAAABeDYIQAACAV4MgBAAA4NUgCAEAAHi1mhGE77//vssi/d4MY/zAU/yAqmC1Wj1dgpeCd94jbDabl0wrqBlB+Ndff5El5wFCSBRFCEKP4DjO0yV4KXjnPYLneVEUPV2FO9SMIAQAAACqCAQhAAAArwZBCAAAwKtBEAIAAPBqEIQAAAC8GgQhAAAArwZBCAAAoGYo5tDB2/hiSSXPboTzEQIAAKimbhrw2UJ8thCdLcRni3Axh1v4Ue/E0TG+lXnu0lobhIIgtGnTRq/Xe7qQSvD0008vXbrU01UAAEDVEjC6acCpxTipACcV4JP5mKFQnI5q4ksNqUfNb0vH+lJ0FZy9u9YGoc1mu3jxYlpamqcLeVJ///13fHy8p6sAAIDKZxXRlVJ77CUV4DOF2EeK2gRQbQKocTH0d13pYIU7yqi1QYgQoigqOjra01U8qYyMDE+XAAAAlaPEis4X3Um+63ocraFI8g2PolsFUCpPhFJtDkIAAACeddt0J/bSilERh+N0VJsAqk9dakpTupkfJa0GQzYhCAEAAFQOXkSXSnFSAU4rwanFOCEXSxl7V+fohnQTX6qJjqqCY3xPCoIQAADAY9LbUHKhPfaSCnByEY5QUXE6qokOjYuh13SjA+WeLvEhQBACAAB4WLdNOK0YOQZ2ZhlxQx+qia/9IF+bAEpRA1OlBpYMAADAXZwP8iXmY05EJPb61KWmt6iq+QxuBkEIAADAzibaW3unC3FiHpNWKoYocSt/qpU/NbEJ3dKfcs98BjeDIPSw/Pz877777vTp02VlZfv27fN0OQAA78IJ6FwRPl2ITxfg0wU4rQTX11Kt/anWAdTQumKbOhJfOePpGqscBKGH5eXl3bp1q1mzZnPmzPF0LQCA2s9lDjsZ3kIGdr7agG4dQCnLY8FsxlKJR2t1FwhCN9Hr9dOmTfv6668VCgVCKC8vb968eYsXL46Li1u6dOmFCxcgCAEAVYEM7LTP5CvBF0twpPrOHPYaOrylcnn9G+AuGo3mwoULW7ZsGTVqFEJo7dq1eXl5LAvvPwCgkpXZ0LnCu6/eMi6GbhdIyWp/Z+ej8aIvYhOPGm7kzUIln7/jXrb2YXuE/GM01fjx45csWTJq1CiM8apVq1asWOGeSgAAtZvLumVZRtzM787Azhhfiqn5AzurlBcFoZJFF4ezvOimp/OVuW4ZOnTo1KlTU1NTc3JyRFHs2bOnm0oBANQuxdydmXxJBfiWCTfV1bYpDe7kRUGIENJ49MCvRCJ57bXXvvvuu+zs7LfffpuqjisNAQCqI+fJfEkF2MyjOKfkq57rltUg3hWEHjdu3LjWrVtbrVbH+QVFUUxPT8/KykIIXb9+nWGYyMhIj9YIAPA85+Q7lY/p8tPyDY+iF7arpit21lwQhG4VERHRvn17X1/fgIAAsqWsrKxv374IoaioqL59+wYGBp44ccKjNQIAPMA5+f7Owyx957R88V3oEKWn66vVIAjdymKxpKamrl+/3rHF19f32rVrHiwJAOB+Zh6dL8ZnCvHZQpxchFOKcJCCahNAtfan3omjW3en/CsMMgBVB4LQfTZv3rx06dLY2NguXbp4uhYAgFs5D+x0nswXp6OeCac6BtWMszTUVhCE7lOvXr0PP/ywV69eni4EAFDlHF2d5FwNZGAnGeEyLoZuG0h5wcplNQYEofu0bdvW0yUAAKqETUSXS+80+M4U2E9IG6ejnougZreGgZ3VGgShh23fvv3rr79OS0tTKpXDhg1bsGCBTAYHBwCo7kqtKKXozqnYzxbiSLX9hLTvxNEdAumg2niWhtoKgtDD8vLypk2b1rlz57y8vGHDhqnValh0FIBqyKWrk6zeQqY0vNoAVuys2eCfzk30ev24ceO+++47tVqNELp9+/aMGTPWrFnz5ptvkh10Ot2oUaMOHz7sySoBAAghhHgRXSq90+A7kYcltH0mH+nqhNVbahMIQjfRaDRFRUW//vrr2LFjEUKrV69GCDkvuo0xPnDgQKdOnTxWIgBezLFQNUk+cnIi0tU5LoZe1ZWuA12dtZcXBSG2crdnvYQ5s3ueLnDiF7KGLZy3jB8/fsGCBWPHjhVFcfXq1c6zCRFCixYtunnz5rZt29xTHgBejnR1kn5OslB1Qx+qie9dTssHaj0v+qempLK6X3gyZgYOHPjuu++ePn06JydHqVR27tzZcVN8fPySJUv+/PNPlUrlwQoBqK2KOHShBF8oH9hythCrJFRLP9TCnxoYSf27NV1fC6M6vZcXBaHHMQzzxhtvkEW3x48f71h0e+3atfPnzz906BCsMgpApcgy4osl6EKJfep6Wgm2CijGl2riS8X4UgPC6Zb+FExgBw4QhG41duzYuLg4QRDWrl1Ltvzyyy8TJ05ctWpVSUlJUlKSUqmMjY31aI0A1DC3TfYeTnJ4L6UIMzRq4kvF6ahoDTUgnIrTUVEaaPCBe4IgdKuQkJAuXbr4+/v7+vqSLWfPno2NjV20aBG52qhRo59//tlzBQJQrdlElGnEqcV3ku9CCfaR2sdztgmghkfRzfwoGNgCHgkEoVsZjcbExMTt27c7tnzxxRcerAeA6qzUiq6W4et6fCaXvWoUUovxdT0OVVJNdChOR3UJpsbF0K0CKBV8jYEnA58g91m3bt1///vfzp07t2vXztO1AFDtkLOup5Xg63p7m++2CUdrqDgd1UCFhkdT0zV0Ux0lgyU6QWWjn/whSkpKXnjhBa1WGxUVda9uvfnz59epU8fPz2/y5Mk8zzvfdOLEifr16ztOVFuLtW3bdsmSJRs2bPB0IQB43m0T3n8Lx18UpyQIff/HB6+31d9oe/eEcCwH66TUuBj6jwGM8V+S1GHsxt7MR3H88Ci6TQCkIKgSldAinDFjBkVRubm5Z8+e7d+/f+fOnevVq+e8w549e1asWPH3339rtdo+ffqsXLly4sSJ5CaO4yZOnKjRaIqLi5+8kmquSZMm97pJFEWaroQfJQBUQ84H9khrL7kIaySIDGZp4ksNjKDjdBScexZ4ypMGIcdx69evP3LkiEKh6NSpU//+/X/44YfZs2c770MWEiPpOHXq1K+//toRhHPmzBk+fPipU6eesIya648//hg/fvytW7coiurRo0d8fHxYWJiniwLg8eWZ0ZUyfKUUXy7FF0tRWjHOMNpXaWnsg7oGU+Ni6BhfOLAHqpEn/TDevn3baDQ2bdqUXG3WrNmlS5dc9rl8+fLLL79ccYezZ8/u27cvISHhpZdeesIyaq7GjRv//vvvDRo0MBqNr7/++pQpU7Zs2eLpogB4KDlmdKUUXy0j/6GrZfhqKcb1DO0AACAASURBVJYxqIGWauhDNfKhXqmPYnV0Qy0lgf4OUI09aRAWFRXJZDKJREKuarXawsLCivtoNBpyWaPRmEwmjuMYhhk3btyKFSsc972Pq1evOi/C2aJFi6NHj97/LhaL5RFeRtXT6/UvvvjiL7/84uPjgxBKT09/9913N2/eHBERQXZQqVRPP/30ihUrKt5XEAS9Xu981Wq1CoLgnsqBg8Fg8HQJHlNipdKN1A0DSjfQF0qpi2XUNT3F0KieCkepUT21+JQffqMejvPFWgl2ua/FiJ7wr9Gb33kPMpvNUqmUYWr2gVm5XP7AlHnSIAwICLBYLFarVSqVIoRKSkqCgoIq7lNWVkYul5aWarVamUy2aNGi0NBQiqKSkpKKi4tv37595cqVhg0b3vVZGjRosHPnzo4dOz58YXd95SabWcBuyg+1VEWhO1N4NRoNy7Lr16+fMGECQmjVqlWBgYFk0W2DwfC///0vKytrzZo1CxYsqPhQDMM4fkkghARB4DhOqYQjKh7g/A9RWxVz6Lr+ztDN63p8uRSzNIrWUNEaKlqLnqlHfaCjGmgpH6n7qvKGd766YVm2FgThw3jSIAwJCdFqtefOnSOnXz937lzr1q1d9omJiUlOTh42bBhCKDk5uXHjxgghmUxmNBpnzJiBEEpNTc3IyPD19b1rDFQWC8+9umsCx3NV9xQODMXM6Ta9ZVBT543jx4+fMWPGhAkTeJ7//vvvHbMJTSbT/v37s7KyEEKkvQiAezww856LoOJ0dEMfSvvgjhsAaiz8xCZNmvTss88WFRXt3btXo9FkZGRgjK9evTp48GCbzYYx3rdvX3BwcEpKSmZmZlxc3MqVK10eYejQofPmzbvPU3Ts2DEhIeGRqjKbzXK5/BFfStUSRbFhw4YJCQlbt25t0aJFxR1+/vnnsLAwl42HDh3q0aOH8xae541GYxUWCu6hrKzM0yU8viILTswXf7gsTD/JD9/Pt9lmU6+16tZZ22yzDd/Pz07iN14XEvPFMqunC72bGv3O11wmk4nneU9X4Q6VMHJrwYIFkydPjo2NDQwM/PHHH8PDwxFCPM/n5OSQHfr27TtjxozBgwdbrdZXX32VnJDPWXR0dEhIyJNXUs1RFDV27Nj4+Pjs7GzSQeoiLi4uPz+f53nn8xQC8KicZ6ZfL0PX9fhiCZYyiMxViNNRw6NRtIZu5ENpoJ0HAEIUxq5HtquhTp06LV68+JGOEVosFp1OZza76eyDD6mgoKBRo0aiKGZmZpJjHps2bQoODo6KisrOzv744481Gs3WrVud73L48OE5c+YcOnTIsQWOEXqKXq+vbkeqDDZEziVLxm1eKcU39DhIQTXQooZaqoEP1UCLGmipBlpKXpMP9FTDd94b1I7BMg8DWh5uFRAQ0K1bt+DgYMdfNcdxM2fOzMrK8vPzI01nz1YIqjmbiFKK8Ml8fCofn8zH6Qbc3I9q7kc10FLdglFDH7q+BpZfAeDRQBC6VWlp6fHjxw8cOODYMmrUqFGjRnmwJFD9kXOpH8/Fx3LwuSIcrqLaBFBtAqjXGtHtAiH2AHhSEITus3z58sWLFw8aNKh58+aergVUayVWlJiPj+WKSQX47zzM0ogk3/QWdJc6tE7m6foAqF0gCN1nwIABPXv2jImJ8XQhoNox2NDZQpxUYP/vlgk3LT/N0KquNJxdD4AqBUHoPpGRkZ4uAVQXvIguldpj73guTi3GcTrqqTpUn7rU9BZ0Ex2cTh0A94EgrC5GjRq1Z8+etLS04OBgT9cCqsRtk/04X1IBTi7CEeWH+oZHwaE+ADwJgrBa2LJlS2FhYXFxsSiKnq4FVJpsE0osEEmz70QelpQf6vu0NdOpDpx+AYDqAv4W3USv1z/99NM7duzw9/dHCF25cuXtt9/eu3cvy7KFhYWzZs3atm0bHD6s6fQ2lHyPQ32ru9JBcKgPgGrJu4KQK7FhwU0LCMh0Eor+x6LbdevW/eGHH6ZOnYoQio+Pj42NJSvITJkyZfr06XXq1HFPYaASOQ71kT7PTCNu7ke1CYBDfQDUJF4UhKJVTF2ZLvLuCEKKphq+GKqNVjlvHD9+/Pjx49977z2bzbZu3bq9e/cihHbv3n379u3Ro0eXlpa6oTDw5O51qO/VBnT7IEoKJ94DoKbxoiCkpXTr6Xc/zZN79OzZk2XZI0eOZGdn169fv2XLlgihSZMmvf3225s3bzYajQihXbt2DRgwAE5SXw1dKcUfJEj/zLMFyql2gVT7QGpENN3Kn1J60d8QALUT/BG71bhx48ii22+99RbZ0qVLl6SkpKSkJJvNhhDauXNn8+bNIQirFTOPPk8WVlwQp8aKa3rK/GE+OwC1CwShW40ePXr27Nk0TY8YMYJs+fHHH8mFkpKS3377beXKlaGhoZ4rELjalYHfSRDidChpCOsrWjSQggDUOhCEbuXr69ujR4+IiAiFwnUEoUQiGT58eMXtwFNuGfFHp8QT+Xj5U0z/MAohpNd7uiYAQBWAIHSrgoKCP//8MyEhoeJNKpVq48aN7i8JVGQT0bI0cUGyMD6W/q4rC1PdAajdYIib+yxatKhZs2b/+te/Gjdu7OlawD0dzsYtt/L7b4t/D2I/bc1ACgJQ60GL0H1Gjx49atQomC9YbWWb0PSTwl95+NtOzIBwmAEIgLeAIHSfwMBAT5cA7o4X0dI0cd4ZYWwMff4FtkafzB0A8Kiga9TDDhw4wLKsX7kdO3Z4uiKvczQHt/6N35EhHhvILmzHQAoC4G2gReh5zZs3P336tKer8EaFHPr4lLA7Ey9oS49uCD8KAfBS8MfvJnq9vmnTpjk5OeRqampq+/bteZ4nV8vKysiEeuAeIkbrrohNN9vkDLowjIUUBMCbeVeLsLTggii4KW+0/o0Z9s7sa41G06pVq7Vr186YMQMhtHLlyq5du5JFt8+fP9+wYcOysrIBAwbEx8eT01OAqnO6AI8/LihYtH8AG6eDQTEAeDsvCkKBN585MF0UODc8F0WxzXvM8Q9p67xx/Pjxo0aNmjZtGsdx69evP3r0KEKodevWOTk5fn5+RUVFI0aMmDp16g8//OCGCr1TMYc+PS1sSccL2tKvNqQhAwEAyKuCkGEVPV705FCUzp0763S6/fv3Z2dnN2/evEmTJgghnU5HbvXz85s2bdq//vUvD1ZYi2GEfrwizjglDI+i04axWomnCwIAVBteFITVgWPR7cmTJ1e8NTc318fHx/1V1XpnC/HEvwSrgLb3ZdsFQjsQAPAPEIRu9corr3z88ccMwwwZMoRsWbFihVwuj4qKunz58qxZs8gRRFBZSq3o30nCL9fEmS2ZyXE0dIYCACqCIHQrtVrdvXv3Bg0ayGT2cTRhYWG//PJLXl5eUFDQsmXLHAEJntzODHHSX2L3YCptmCRA7ulqAADVFQShW92+ffvgwYOLFi1ybHnuueeee+45D5ZUK10uxZP+EgosaEMvpmMQNAMBAPcD06fcZ+7cubGxsVOnTo2KivJ0LbWWiUefnha67eKfDadPPc9CCgIAHghahO7zwQcfTJ8+3dEpCirdzgzxnQSxax3q3FBJEJzYEQDwcCAI3UepVN7rJovFcu7cOYVCERsbS2bZg0dytQy/kyDcMqKfejBP1YFWIADgEcB3ruft3r379ddfDw0NRQg1bNgQTs/7SMw8+uKcsCRVnBRHf9yXkUJnPwDgEUEQelhmZubLL7+8bdu23r17I4TMZrOnK6pJdmaIUxLEOB06M5QNV0FDEADwOOD3s5vo9fqIiIjMzExy9fTp07GxsYIgrF+/vnv37j179szMzOR5XqGAQ1sPJcuIRx8W3v9bXNGF2dkPUhAA8Pi8qEWIETqaX2AVRfc8XQd/P43T0T6NRtOvX7/Vq1d/+umnCKGVK1cOGTKEYZjLly8LghAbG6tWqzMzM+Pj459//nn3VFhD2US0LE387KwwoQn9XVdWBqcPBAA8GS8KQrMg/OfSFYtbgpClqPlNm7TR+TpvnDRp0sCBA2fNmmU2mzds2JCYmIgQKikpSUhIOH/+fN26dXfs2DFmzJg+ffqo1Wo3FFkTHcrGk44L0Vp0cjBbTwOtQABAJfCiIFQyzM4unTxYQMuWLUNDQ/fs2ZOdnd2pU6cGDRoghEJCQp566qm6desihAYOHMhx3MWLF9u2bfugB/M6t014xknxrzz8bSdmQDhEIACg0lTOMcKffvqpc+fO7du3X7Zs2V13SElJee6551q0aDFhwgS9Xk82rlq1qm/fvi1atOjTp8+GDRsqpZJqbvz48fHx8fHx8W+99RbZ0rFjx9zcXHK5pKSE4zg4H6ELXkT/PS8238KHqtD5F1hIQQBA5aqEIDxy5Mi77747f/78JUuWLFy4cMuWLS47cBzXv3//Hj16bNy4MScnZ9KkSWS7j4/Pxx9//Ouvv7711lvjxo3bv3//kxdTzb344osnTpzIzs52LKs2YsSIwsLCmTNn7t27d8yYMU8//TSsO+PsaA5utY3fmSEeG8gubMfI4YggAKCyVUIQLl++/O233+7Vq1f79u0//PDDio3CrVu3+vv7f/DBB40bN168ePGGDRsKCwsRQsOHD+/Zs2dsbOzw4cO7d+9OjpnVbgqFokuXLm+88YZj1rxMJjt69KjFYvnhhx+6d+9e8WeE18oxo9GHhZGHhA+b0/sHsDG+0BAEAFSJSjhGmJKS8uKLL5LLbdu2nTdvnssO58+fdxz0ioyM9PHxuXz5cqdOnRBCJSUlOTk5ycnJZ8+e/fzzz5+8mGru2rVrBw8eXLJkifPGunXrOi/DDRBCy9LET08LYxvTl4azSi86kA0A8IBK+I7Jz893nE5Wp9MVFBSIokjTd9qaeXl5vr53xk/qdDrHUbFt27b997//vXHjxr/+9a9GjRrd6ylu3LgxdOhQxyqd0dHR27dvv39VFovl8V5O1ZkxY0Z8fPzcuXPJ0JiHJ4qiwWBwXBUEgeM40V3zQNxvzTVmxWXm9162RlosWpDhwfdwE6PRSFHQMPUAeOc9wmw2S6VShqnZByTkcvkD162shCDUarVGo5Fc1uv1Pj4+zimIEPLx8SkrK3Nc1ev1Op2OXH7ttddee+01vV7fv3//L7/8cubMmXd9ivDw8BkzZrRq1Ypc1el0D5xgUA1X7Fy4cOHChQsf4440TTu/XkEQJBLJfVYurdFO5uN5KfzR59gYX6mna3GFMYaZLR4B77xHMAxTC4LwYVRCWkRHR1++fJlcvnz5csWxHlFRUY71M0tKSvLy8lz20Wg0/fv3P3v27D2rZNm6detGR0c/ebXVTWFhYWlpqeMqRVHePFimiEMvHRRWdmHgiCAAwG0qYbDMqFGjVq1aVVZWxnHcsmXLRo0aRbbPmzcvLS0NITRixIikpKS///4bIfTtt98+9dRTERERCKFDhw5hjBFCGRkZGzduJEcNvc33338/olz37t27dOni6Yo8RsTolUP8y/WpofVg5T8AgPtUQotw5MiRx44di4iIoGm6X79+EydOJNt/+umntm3bNmnSJDAwMD4+/tlnn5VIJAEBAZs2bSI7fPzxx8nJyRqNxmKxjB079p133nnyYmqcDz744IMPPiCXhwwZ0rhxY8/W40GzkgSriOa2qf39MACAaqUSgpBhmJUrV37zzTcYY+cDV5cuXXJcHjly5IgRI4xGo2NYDUIoISHBZrOZTCbnjbWVwWAIDw8/deoUWVDmr7/+evHFF9PT0x3977m5uXv27PGGobN3tSsD/3QVJz7PMtAnCgBwr0obUfLA0yawLFsx8CQSiftSECPbmRuYF9zzbJK4MEold1xVq9UjR45cs2bNggULEELx8fFjx451Pgq9bt26Dh06xMTEuKe8aiVdj988ym/uwwbKH7wzAABUrmo3tLLqYBtvTbyKbG4JQppmQnSM6h/f6xMnTuzdu/ecOXNMJtPWrVvPnz/vfOvatWs//PBDd9RWzVgE9MIBYXZrOLM8AMAzvCgIKSmrGtfXgwU0adKkYcOG27dvz87O7tWrFxkxRPz1118ZGRnDhg3zYHmeMuG4EONDvR0LA2QAAJ7hRUFYHZBFt/Py8lyOBa5evfrll1/2wplSKy6IiQX4xCD4HAIAPAZ+hrvVCy+8cO7cuZKSkv79+zs2GgyGTZs2vfHGGx4szCNO5uNPTwtb+zCwiBoAwIPgG8itpFJpx44d27Zt67IE3bx58zp06ODBwtyPzJ1f9hTTQAuHBgEAngQtQrc6c+bMoUOHxo0b57wxOjp6ypQpnirJI0SMRsLceQBA9QAtQveZPHnyjh07/vvf/wYFBXm6Fg+blSTYYO48AKB6gCB0n//7v//7v//7P09X4Xkwdx4AUK1AEHqeyWQ6fPiwXq9v2bJlrV9iDebOAwAeGcai2YgtJpEzYYuR0dVhfAMq8eEhCD0sKyurc+fOzZs3r1ev3pQpUz788MP333/f00VVFZg7DwAQLSbMmUWLEVtMosWEzUbRYhQtJvtVi0m0GLHZKNqvGsn+tFJNyZW0TEnJlaqOT6s69KvEkiAI3UQQBL1e7zhBMca4pKTEx8fn559/btiw4a5duxBCAwYMeP3112txEMLceQBqGWyziia9aDaIJgM260WTAdus2GYVzYY7221WbLOSW0VjGaJpSiKlWCmtVFMKDa1U00o1rVBTEhktV9K6ILKFUmgoiZSSSGmFmtH4IroKhxRAELqJ1Wpt0KDBkSNHmjRpghA6fPjwG2+8cfXqVT8/P4vFQvYxm81+fn4eLbMKLYe58wBUV9hqES1mzJU30TgTtpg5Q5nVZkGcmbTVRIsJc0bRYsJmk2g2iBYTxTCUTEnLlbRCRSlUtFxJyVV0ebtNEuxHyZW0XEXJlbRcSS7TChWiql2HkBd9K2Es5Cf/hkXePU+na9RLqg50XFUoFGPGjFm9evWiRYsQQvHx8ePGjaNpesyYMWfOnOnYsWN4ePiVK1d++ukn95TnZifz8ZzTwrGBLMydB6AKiaJoMYlmA+ZIqpkxZxZNepEzY5JnnFk0G8gFXN5FKZqNlERKy5SUTEErVJRcRcsVlEwhMlJKpWFUGkoXVJ5kSlqupBQqEm8UU0v+nmvJy3gYWBRMuRdF3uKOJ6MYbUQ75BSECKEJEyZ07Njxs88+MxqNu3bt+vrrrxFCKSkpu3fvnjRpUmhoaHx8/A8//NC6dWt3VOhGMHcegEdl7060cY5eR2yzYRsnmgyk1xHz5VcdfZK8VTQbKVZCK9S0Uk1JZIiVOnc8UnKlxNHx6LhVoaZVWoqVVKzBbDZLpVLnk+TUVl4UhDQjrdd/pgcLqF+/fqtWrbZs2ZKdnT1gwICQkBCE0JdffvnSSy+Rc/P27du3Tp0606ZNq1u3rgfrrFxk7vxImDsPvB4WeNFYJhrLRKNeNJaKhlKBXDWViYYy0owTORO2mESzkZLIaLmCdDxSChUtU1JyBS1TUDIlrVSzQeG0TEHJFbRMae+TlClpuYKSwmjsx+FFQVgdvP322998801ubu6yZcvIFoZhrFYruWy1WjHGtez3F5k7PwfmzoPaCwu8aNTb88xUJhpKBWOpPe2cYg/brLRKW/6fD6P2oVUa1i+IDm9IqzT2zkaZotoeSKvFIAjdatCgQVOmTJHJZL169SJbxo4dO2jQIIVCERoa+v333w8ZMiQ4ONizRVYimDsPajpsswplhUJpkX3Qo8kgmg1CWZFQWujokxT0xbRCxWj9nMdA0kqNJCiM8SnfqFAzWj+It+oJgtCtWJZt2bJl9+7dqfK/h549e546dWrnzp25ubnTp08fOnSoZyusRDB3HlRnD5VwhhKKYRmtP631c044aVgDJq49JFytAUHoPiaTKSEh4dixY+vWrXPeHhMTExMT46mqqgjMnQeehLGgLxH1xUJpoWAoEUsLBX2xUFYklhUJ+hLRWCpazMydXkoNrfKh1T6MSsv6B9MqLa3U0motrfah5SpPvxLgDhCE7jN37ty9e/euXr1ap9N5upYqNx7mzoOqhG1WR7AJpQWioUQoKU87fbFoKKVVGlrty/gEMBpf2sefDQiVRTeltX6MxpdW+9AKrzsJNrgPCEL3Wbhw4cKFCz1dhTssvyCeLsAJMHcePAFH16VYVmTNu13KGYWyQtFkEEnvpdlAK9SMj73TktH6S0Kj5D5taa0f4+PH+AbWmiluwA3gswIqGZk7fxzmzoMHEU0GoayQBJtw5/9F2Kzni/ORKJCDc4yPnyBXSwNDJMERtFJNa/0ZrR8clgOVCL6rQGUic+eXP8XUh7nzXs95NIpQWiSUFdmHopDMM5TQciWj9aO1/oyPH6P1Z/1DSO8lrVSzuiBKpnA8lF6v12g0HnwtoHaDIASVxjF3fgjMnfcSGAtkQEppoVCSL5QWCiUFQkmBUFYoFOchimZ8Axi1L+PjT2t0jNZPFtWE1ugYH39Go6PVPp6uHgA7CEJQaWDufK2EBV40lAplRWJZoVBaxBfmlB+6K+SL8iiWJa06NiCERB3jY78KA1JATVGbg5Dn+S+++MLTVTyp69eve7qEhwJz52s055Ep5FgdX5hNrvLFubRcyfqH0Fo/xsef9Q+WBEeQUSqsXx1Y0wvUArU2COVy+dy5c4uLiz1dyJPS6XRTpkzxdBUPAHPnawR72hXmlEddjuOInWg2OEamMFo/xsdfGd6NXGV1dRANfd2gNqu1QYgQ+uijjzxdgleAufPVimgy8IXZpBuTjE/hC7LFskLHOEzGP5gMTpHUiZA3asX4B8MgTODlanMQAvcYf1yI9YW58+4jGkrJEBV7N6a+WCjJF8qKhOJ80VBKq30Y30Ayl47xCZBFN1W26clo/RjfQEoi9XTtAFRHEITgicDc+cqHsWAoEfUlQkmBYCgRivNFQ4lQUuAIP0quJL2XtNaP0fqxAaGy+s0YH39GF8RofBENg5UAeDTw/QUeH8ydf2z3mksulhUJJfmUTE5OZWA/YucbII1oZB+f8s8JdgCAJwdfYOAxwdz5+3uYqKs4lxyWBwPA/eDvDTwOmDuP7ht1fHEeLVdA1AFQI8BfI3gcnyR619x5oTiPu3befPksZygWSgpEfYlo0tNqH8YngNHqaB9/RusnCY2SN25tP3Sn0cEgTABqCghC8Mh2ZeD112r73HmMbXmZ1mvnuevnuevnEW+TRjdl6jZUtexqXzBM4wtRB0DtAEEIHk1tnjsvira8TOv1VMvlM9zVcxTNSKPj5I1aafq8KKkTgShKr9fLYelnAGqdygnCmzdvfvXVV3l5eb17937zzTepCr+UOY775ptvkpKSoqKipk+f7ufnhxBKTU3duHHjlStXfHx8Xn311c6dO1dKMaDqkLnzn7apRXPnRcF66zp3+Qx3PdV6I5VWaGSNWyniOvgMGsv61fF0cQAAd6iEIDSbzd26dRs2bNjIkSNnzpxZWFhYcUmXSZMmXbly5f3339+4ceOzzz6bkJCAEPryyy/r1Knz/PPPp6en9+3bd/v27X369HnyekDVIXPn34qp2QNkMGe23rzIXU/lrqdab16UBIVJo5qo2vXxG/k+rdJ6ujoAgLtVQhBu2rTJ399/0aJFCCE/P78RI0Z88MEHEonEsUN+fv6PP/54+fLliIiIZ555JiQk5NixY126dFm7dq2j7Zienr5hwwYIwuqsRs+dFw0l1psXuetp3PVUPjudDakni47TdB8srf8JLVd5ujoAgCdVwpfaqVOnunbtSi537tw5Pz//5s2bDRo0cOxw9uzZkJCQiIgIhBDLsp07dz558mSXLl2ce1CzsrJatGjx5MWAKlIT584LpYXWG2nc9fPWG2l8/i1JRGNZdJzPM6Ok0U0pVvLg+wMAvEMlfKvl5OQ0a9aMXGYYRqfT5eTkOAdhbm6uv7+/46q/v392drbzI2zZsuXEiRNr1qy511NkZWVNmjRJq7V3W4WFhS1btuzJK6+hBEHgOE4URbc9Y7GVGrFfsrgNX4fmDAa3Pe3jEItz+avn+IyL/I00JNjo0PqSerHS58YqQ6PJIE8bQjYLhxD3GA9uNBorHv8GbgDvvEeYzWapVMowNXuWlFwuZ9kHJF0lBKFSqeS4O18rZrNZpVLdZweLxeK8w4EDB8aPH79jx46AgIB7PYW/v/+YMWNiY2PJVT8/P7Xae8/5KQiCRCJRKpXueToRo2HH+FENqZdjquWSzaJovXXNej2Vu5HKXUmm5SppdBNVwxbS/iMlwZGV+1QYY2/+4HkQvPMewTBMLQjCh1EJQRgWFpaenk4u5+fnm0ymsLAwlx2ysrJ4niexnJ6e3rt3b3LTkSNHRo4cuXnz5o4dO97nKRQKRbt27e6/D6ginyQKfDWbO4+tnDXrqvVGKnc91XojjdHqpNFNFXEdfAe/yeiCPF0dAKCGqYQgHD58eK9evXJycoKDg9euXdujR4/AwECE0MGDBzUaTbt27dq2bavT6bZt2zZ8+PC0tLTk5ORBgwYhhBISEoYPH/7LL79069btycsAVWFXBv75Gj5VDebO/2OoZ/oFSZ1w+1DPVz6glTC3DwDw+CohCFu2bPnaa6+1atWqUaNGV69e3blzJ9m+dOnS6Ojodu3a0TS9ZMmSMWPGLFu27Pz5859//jlJymnTphUXFw8bNozs37t3702bNj15PaCyXC3Drx/hf+vrsbnzQlmxLfMSdz2Nu3zGlpclCY2WRcdp+4yQRsXBqfUAAJWFwhhXygPdvHkzNze3efPmcrn9W1Ov1zMM4ziUVVpaevHixcjIyODgYMcOPM87HkEikdzrMECnTp0WL14MXaMEGSxT1ccILQJ6aic/LoZ2/6xBvjBb/8cG7mqyaDHJouNk9ZtJo+Okdet7/Ex7er1eAyvLeAK88x5ROwbLPIxKGwsfGRkZGfmPsQkuH1wfH58OHTrcZwdQrXhk7jy2QUhuKgAAIABJREFUWfUHNhqO7lD3GOLfc44kKBzW8wQAVLWaMykMuNGyNA/MnbeknijZupINjqjz/hLGD8a8AADcBIIQuDqZj+eecevceb4wu2TrCj4vy3fYRHlsWzc9KwAAIIQgCIELN5933t4XemS7uttg/9c+gQVfAADuB0EI7iDnnX+lgZvOO29JPVGydQUbHFnng6XQFwoA8BQIQnAHmTv/aesqHyTGF2SXbF3O59/yHT5ZHtOmqp8OAADuA4IQ2Lln7vw/+kJfnwV9oQAAj4MgBAi5a+78nb7QD5fCWmgAgGoCghAgM49ePCjMa8t0rrLzzkNfKADeSeSxaBMRQpjHglVECGERC5yIEEIi4i0C2Y03Oy6ICGOEkGARyXovAidiASGERJso8hghpItR+zerzHNoQxACNOGvKpw7D32hAHiQI4cEi4hFjEUkcAJCSLTZt/MWEWGMBaftvIgQ4k0iz/M0TYscRgghjHmz/dRvd0LLIiARIZJVIkYICVYR8xg5hRbNUrSERghRLMVIaYQQRVOMjEYIIRqxcvuIBFbhuECTZTQYOU3OvcXIaEqGEEK0hKVZCiGkCKjkFRYhCL1dlc6dh75QAFwIVhELWOBELGDny66JhZFgcSQWRiR1MCL7Ox4HIcSbBIQQeTRkbz9hVB5Xjhxi5DRFU4iyZw8tsW9n5TSiKIpBjKx8O0sjhFgFjXmKZRlJIIsQQhTFKuy/le+ElpxBNEIkq2gKIcRIaYqlEEK0hCahVSNAEHq1E3lVNXeeL8gu2bqMz78NfaGgJiKxRJpNpJF038uYNIBEq2i/4z8vk3YSiS5aStMMxchoiqEYKU2VX3ZJLIpCTHlisUoaIST3kyAKUTTFyGnklDSskkEIkUdDJJMYCjnF1WODtUZB7XfbhIcfENZ0Yyt37vw/+kLfmE0x8BkDVYt00PFmgRx8IrFkb2xZRCxi3ixgEQkWEQuiYMUiL4rW8gyzJ5ZztmHRJpJYIs2me16WUDRLk6AivXb/2E1avvM/L3v63aoubCJv4S1Gm4njOYvAGaxGTrBaBaveauB4KydwBqvRInBWwWqwGi08xwmcyWY282ZOsA5t/NxLsUMqsRj4kvJSFgEN3S9MakIPCK/Mv0xL6omSLcvZkHrQFwruyp5VJH6songnq0SEMW8WsIAEq0CaWeVhJtisPLIVYhELFnuPIgktsgPpoGMVDDn4ZA8eCUWzNGldkcNOrJKmGIaR0jRL01J7htl3ZsqzqjyxPP0+VXdWwcqR0BKsVt5qsNmzymgzmXmLlbcabSaLYOF4K9nCCVazzWzizRzPmXmL0WaiKUrBKpQSpYyRKli5SqqUMVIZI1NLVTJGJmOkGpk6gPGTMVK1VE22qKRKBSuXMVJ/hX/lvhwIQi816S8hTEVNa1Fpf/B8we2Srcv5/Nu+I96BvtDahDcL5LgUaSqRQ1BOuYUFK2lgYcEikEgrb5mJzmGGRcSbBZJVZNyEPatkNMVQrJxGNMUqGIpGjIyhWYpV0lIflmYpRsZYrGaNn5ocpiJ9gKTtRboWPf0O1TwCFkw2s8lm4gSrmbeQ1hjHc/Y84+15ZrSaOIEz8xZO4Cw8Z7CV72Y1sjQrZ0loOaUXK1VLVHLWHmOBTICMlaok9vRSSBRKViFjZQpWrpQoGKoa9bhCEHqjb86LSQX42MDK6aaBvtBqhQQPbxbI2HR7htmwyIsu/YSkP5AcvuItAiIZZg82UeQxGQpoDyc5Q5pKrrlljyWKVdIynYSiEassb5k5ZRUjZyj68Y9a6fW0RnP3k5V6J6PNZL2TYRzHWw02o5m3WAWr0WYy2cykBWa0mewZZjWSC0abycybRYxVEqVSopAxUgWrUEmVckYmZaQaqdoRY0GqAEqgtAqNWqqSslIFK1dJlDJGKmflKomKrl3nR4PvLK9z4DZemCwkDGJVlfGPf6cvdNoyxjewEh4RlPcf8mZBsIgCJwoWgVzlzaLA3dnIW0TeIggWUbSJgkUUBSxaRftYDHuXIEPGYvyj7aWgKZpilTTNsvagYilGxlCMU+8iybDyoYCgcll4zipYDTYjx3OccKfz0GQzmWxmC8+Rg2cWgeN4Tm81kKgjGcYJVpPNrJQoZIyMhJOcdc4wmUqiVEjkGqlaqVUoJUo5I5OzMrVEJWNlMkaqlqrkrFxCP9QfPwyWAbVTuh6/epj/tRcbpXnSLzi+4HbJluV8YTb0hd4HaZDxZoG32PNMsIgCJ5CQ4y13go03CeQyz4miTWTlDKtgGDnNyGhGzjAymlUwrJxmZLTEX0o2sgqakTOsnKYlNCOnHeMGQZVytMaMNpNjWAcnOC7Y22ekF1FvNZDDafabBKvBarzTncjKpIyEdCfKGZlSolRIFHJGppGpg9VBsgoZpmDlMkamlCg8/R7UNhCEXsRgQ4P+EGa1YnqEPFEKYiunP7jJ3hc61ov6QgWLaLFanRtqPPm/2SXkRN4sCJz9cBojo1kliTR7kjHlIafQsIycZmUMI6fLY49h5DTkWRURsUiGKXLCnfEdJpvZ0alotlkcW0gTzcybOd4eeyT/HD2KSntXoUwlUdpDS6qSMlKNTB2iriNlpOUxJiUtNhkjkzISjRT6eKsdb/kKAxihN44KbQKo8bFP9CXrFX2hGHElNkuh1VxgtRSW/1dgFUVRqpawCoaR0Y7QYuUMq6BlPpLy1htputn3gfGHT0JvNZDoKjWU0bZcq2CzClYLz9lEm8lmFrBgsBpFLJL/G20mXuTNvMUq2DiB4wTOJvAm3iyIgsFm342maHKgy55MrEzGSEnvIulUlLNylVQZrq2rYOVSxj7QQ8pIlRKFozfS0+8KqHwQhN5i3hkxy4gPDnj8f/E7faEvTpE3bl2JtXkQFjDJPEuh1VJov2DK42iGkvtLyX++DVXyjjq5v9Qm4TRajadLrhbIlC9y2WA1YoQRQiSHyEYzbxFEgexGostsM/NYMFqNIsaOhCPDF+0JJ3A2wZ5wRptRxFgjVVMUpZaoaESppCoJw5KGl4SWKCQKlmLUUhWFKI1MTSEqTBvKUoxCopDQEhJsEoZVsAqWZtQSFUVR0BQD9wJB6BV23BTjL4onB5NFlB5Z7egL5c3CneZdeeZZS21SH0l55kkCwrVyf6kiUGZfC/GfbHrObdWaeQsv8gghXhTMvJlsNNpMIhYRQiQ5UHlfH7mV4zmraCOXHeFkE3hLeTiR5hFCCCNssBrJRnIEy34vmxFhhBCyiTYLz5VXYuZFweW5SKOKXFZJlDRFI4RYmlGw9sNXClbO0IyUkcgYmYyVScujSyVR0jQdqgmmEKWWqhiKUUoUEpqVsTLSc0iiy/GYhF6v12jgJwioKjXyGw08kosleNwxYWc/NlT5OIcGLaknircsk4RE1ZS+UCxirti1kWcpsCIKORp56jB5QAut3F8q00keZmBkKVeWZyq4WZDJFrOkZYNIxgj2jDFYjWSlfEdTyTlsHKkmiIKjzWSwOe7CWQUb+mfSKFg5S7Pon+niiAcpIyE5RBpM5FaSN+QyaSohhCQMq5HZW0JBqgDymCSEyEYpI5WVR5paokIUQgixNOvoAyTJhBAi/YoP/e8AQI0BQVjL/X979x3fVnnvD/x7pvayZMsrdpzEsbOnybjZITeDMBIopUDhhkILBQp0hFmgLaWUMloo65YfZRXKCpdASEIWSZw0y3Z24gzHTuIhydpbZ/3+OLIsj0wPeXzfL168jo7OOXqsyPr4ec4z3FG4Zp3wpxKqJP2SU5B31HpWvME7G9JuekgxdFxXFK+DRF6Keds0bDZESIaUA0+dqbCM1cvbFxzExotCY9hpCzpsQbst6LAFHbaQwx50NATtLMlmaNLTWKNaoZJrNtAyLTRsfGSVmWQVNAstwyaRahRJJU6R2+sgKYqST0EIdRsMwr5MlODW7/lr84hlQy+ty0bLttCne0Jb6MU3bKozFOR5e13GhFhj2FUfsNUFGhpDLmfYVRdoqA/YbEGHmlFlazOztNZsbeZAQ97ErLFZWmuuLluuCWEDHUJ9Uuq/4FDXeXiXwInwp5JLuzGY1Bb6BmW0dFHZzkMSJO/JYNgeTeq0yVFKUiUHnoXVF6gzJhqVFpbVne8D7I8F5IRLTrvGsNMfC1pUaVlaq1mVZlGlFZmHzM6flqW1WjXpPWraJ4RQ98Ag7LP+dUL8olradS1NX3RtMN4W6rKlqi3UXxO2l7kbK7yqDIUmS6m0sIbBGjn8zjW0jhM4R9hZH7A1hpzOiLvO31AXaHCGXQ1BO0My2dpMs8pkVqVl6zJnm6fJ4WdWmeT7ZwghBBiEfVWFU/rVTmH9ItpycaOe4m2hpd/o592knX41kN1aMYp5ucZ9Ptsut8hL6eMMYx4crDS3XoHaHws0hl2usLsu0JBIO2fY3Rh2WVRp8bTTZsrVuzSVKUuTocQhXwihi4BB2AfZwnDdOuHvU6mRpouq98hj5NnBI60Pv0HpTF1dvASRE12H/fbdHl9NKG2YruCaTGOhFgjwxwJbq7fX+uvlHiuOUGND0KGmVVZNeoYm3aqxZGqswyxDM9QWqybdpDR2W4ERQn0SBmFfw4nww438nUXkDQUXbhLlG+vcn74iBn2mW5crBo3ohuIBAEjgqw7Z93gaK7zaPFXGRGPx7QNIhhQlcVd9+ZqqDTvry8dZRw8y5o2wFM/Jn27VpFs1GYku/ggh1LkwCPua+7cLJpZ4YtyFUlCSAltX+r77SD/vR93WFhqyRRv3eu27PSRDZJQYJzxWyGhpADjjq11/ZMuaqg1KWjF/0JwHSn5mUOi7oTwIIQQYhH3MG0fELQ3SjmsvsNAg77K5P35J4mIZD7xEp+d0dan4sNC412vf44m4OMto/bBleZocJQAEudDGqi1rT22q9p6elTftjzMfG2Ia1NWFQQihVjAI+45tNun35ULp1bSeOfdBkhT8z2rvt+/pZl+vm30DkF04JbTIS57KgH2Px13pNxXpcuekm4ZpCZIQJemA4/Daqk2bT28fmV58TeGCabmT6e7tnoMQQgkYhH3E6YD0gw38P2fSg/XnrA0KLrvr3y9JsUjG/S/Q1gFdV5jA2bB9t8dR4VWlsxkTjYU35chTd9pDjeurN399fC1LMfMHzfngmteNCkPXFQMhhC4GBmFfEObh+vXCw6OpBbnnTMHQ7vWer/7RpRXBqIdzlHtsOz1AQPo4w5gHBynTWACICrGtp3evPL7muKtqZt7U301/eGja4K4oAEIIXQYMwl5PXmhwmJF4YGT78Sb4XO5PXhH97vT7/8JY8zq9AEJEdB702fd4AmfDljGGwpty9AXxqZkrXSe+Pr52Y83WYnMhNoEihHomDMJe7/l9YqVXKl3c/j9leO9Wzxevq6+Yp7/jiU6eMlQCz/GAfY/HddivH6jOnGIyj8wnKAIAHKHGdUlNoP+65k0c7YcQ6rE655vR6XS+//77brf76quvLikpaXuAKIqffPLJgQMHRo8efeONN5IkKe+srKysqKhQKpVLly7tlJL0N9/VSq8eFndcQ6na/EsKPrfns1d4Z4PlZ88wuZ3ZFCmPgrDtcjMaOmOiseCaTHkUREyIbU9qAn1s6oOj0od34usihFBX6IQgDAaDkyZNmjJlyvDhwxcsWPDBBx8sWrSo1TH33HNPWVnZzTff/MILL2zevPmNN94AgNdee+1Pf/qT2WxmGAaD8DIc80o//p7/fC6dq2l9azBREUz7n8c7qyLIh4TGfV77Hk/UzaWPN468e6AqXSE/JTeBbjpdWpQ2ZH7B7D/N+i2Of0cI9RaEvDRoR7z11lvvvffe9u3bAeAf//jHu+++u23btuQDzp49O2TIkFOnTmVlZdXX1w8aNOjkyZPZ2dkcxzEM8/HHH//lL38pLy8/z0tMmTLl5Zdfnjx5cgeL2jcIghCNRgVGPWUl/+BI8s6iFrcGBb/b89mrvKMu7ZZfM7lDOv5yrUZBZEw0yqMgAKAx5Pyu+vtVJ9aRBLlw8NwFBXPSVN03Q1v3w2WYUgXf+ZQIh8Msy1JU37+v3wl1hU2bNi1YsEDeXrBgwU9/+tNIJKJUNs93vHXr1hEjRmRlZQFAVlbWsGHDtm7d+sMf/pBhzjPeDZ2PKMEtm4S52USrFAzv3epZ8bq6ZF7a7Y91vCJ4rlEQchPo2qqNBxuPzhww9ZEpv8AmUIRQ79UJQdjQ0DBr1ix522q1AkBdXd2gQc1ThNTX12dkZCQeWq3W+vr6S3oJm8327LPPJi6Sl5e3fPnyDha79xIE4clyyRURPpwmRiKcvFMKev1fvik6anW3P07nDIlyPHD85V0/5uVd+/yO3T6SIkyjtMX35ChMDABwUuxwQ9X6mi2bTpcOMuZfmTfj4Ym/UNIKAIhEIp310/VkkUgE/3pLCXznUyISiYii2NtrhAzDXPBH6IQgpChKEAR5W95o9ZGlaVoUxcRDQRBo+tJeV6VSFRcXFxQUyA8tFktv/7fpiK/OEF+cJf6zmFAx8Tchun+b/6u3lBPmam75DUFf5vcFHxE8h4ON5b5gXSRtpG7wjVm6gSr5KWfEvfn09jWnNnAiNztv+uv//bxVnd45P0yvQlFUf/7gpRC+8ylBNUl1QTqEIC68CE8nBGF2dnZdXZ28XVtbS5KkXC9MPqC2tjbxsLa2Njs7+5JeQq/XL126FO8RAsA+l3TfTv7/ZvHZOhUAiKGA95t3YlUHzXf+js0behkXlETJeyKYGAWRNTXNPFIvj4LgBG53Q8Xaqk3ltv2TsyfeN/HO8Zmj+/OStgzDYL0kJfCdTwme5y+mOtUHdEIQLl68+A9/+MPTTz/NMMwXX3wxf/58lmUBYP/+/WazOScnZ+7cubfffvuRI0eGDRt25MiRmpqaOXPmdPx1+yFXFK5fL7wymRiXJgFA5PAu96evKIdfkfHLVwlWcalXE3mpbouzbnOj0sJmTDQOWpJFq+Kf+FPe099VbVpdtT5Xlz1/0JxHpzyAi9wihC6bIEm+NjdrIqIQbmpNTPBzPN+yC6coSV6OS95TpNMNUKs6sXidEIRLly79+9//PmvWrKFDh3799dfffvutvP+ee+5ZsmTJr3/9a5PJ9Pjjj8+fP3/RokXffvvtE088YTQaAWDv3r2/+c1vGhoaampq5s2bV1JS8uyzz3a8PH0VL8IN6/kfDSZuLICIN+j+5u3osYq0Hz+sGDzqkq8lgX2Pp2aNTTdANereAlVGPERdYffGmtLVVRv8Mf/c/BlvzH8hS2s9/5UQQpctLAgRIX7bKCjwsaRbSD6OF5LywB2LJbYFSfLxzaESE8Ug3xwnYUGIJKVLgOe5pOt4OU5seihKkBwwnCQGkq4TEYQgxxEEkWha5EQpwLcOs5AgRMXWYebleLFlmFEEoWdax42SpFRtqps6hqZbNmYSQBjZFu0BP84fcFt+Z06S1QnDJwCA47gNGzY4nc45c+bIvUMB4MCBA2azOdEKWl5efujQoZEjR44bN07e4/f7jx07lriIXq8vLCxs9/o4fAIA7t8unPBJ38yno4d3ej59VTXiCuN1PyXYS66oeY4Fqr9uIGiy4GqrfpAGADiR311fvrZq0+76ipKscdcULujnTaDngp34U+Uy3nk/z/OiBABRUQgJAgBIEniavvcjQnNdJMALnBRPIE+Mk78QeUn0N9VgIqKYdDDPNcWVOxa/Gi9J/qaESM6hRBkAwM3Fkyw5TlQUpaTiHb/VFK1ImgS4VR6Y2OaBuRRB6JO6WbAkqaGb40RFUcqkdNHSNJN0HQPDkE0PCYDkgKEJQpd0WSVFkTzPMAzZVCqGJLRtuneoKUrRZt5EA0OTF3FnrufonCDsahiE7x8Xn90r7pgfldb8v2hlhXrpz/Uj2pnB5/xC9ZHqVbZwYyx/YYZltAEIqPae+er46o3VWwuMeQsHzZ2ZNxWbQM8Dg7AtTmyuRng5TgQJACJCPDmSG7X8fLzJK7kGk6joBAVBrg9xopjICQ8Xr8z4olGBJAGAF8VE5CTqTIkWtuQqjo6maZIAOSeahhKZmr73FSSpbvpO19IUQ8S/640sI39/0wSpa6rBKEkyUXHR0jTTFAyJqyVHiJJqruUkygAAJiaeZDTZIm96MhxHiHqQ/9ilX+8USov3hV9+RTlsouVXr8bg0paPiHq4M+sczoO+AXPTh92RJhGwvW73F5VfV3tOLx4y/62FL2ZqMi58FZRSiVQI8Lxcg0k0rCWHh5fjm9JICAsiAEggeZrqLom84UXJz8d3JhIlKoohoXVEhQQhKogQb5GLnxLgBblixJCktqk6YmAYEggAUFLx5Ehu1ErkTXINJlHR0VCUhmGaLkg3XbCpYhGLmTQaiLewxS+oZ2iKICCphY0kwIB9atClwyDs6epDsOw7/7rYu/rV5aabf6koHCsIAkSjF3k6HxLObmxs2OnKnJQ28bGhUTL6TdV3nx1dqaQUVxfOnz/zCRbnQrsQOVG8HOcMBoEXIH7nPx4J7kSNp+kmf0jg5eRI5EoidSSARCZ5OU5uYgvy8ZtDiYoUJ8WDLbmKY2AYuXahpWk5URINa63DI55GlIoioWUaJfKGJomhtFbemUgUBUmqm/78N7KM3DyeeBUSiETMaGmK6cpVnVvBujjqUhiEPVpEgKc+3f3ViVczRk80Ln+DUFxCRylJkOq3uc6sd5hH6ccvL2wkGt8+/ME3J78baSl+YOJPJ2SO6bpi9xwejosKYlDgfRwfFUU/xwUFISIIXo6X7+W4OS4qiCGB93F8RBQCvBDg+Ygg+Dhe7gXgjnEKklTTlIFhGAA9ywIASTRHgpGJN6YlbuqoKVpBkQCgIElTm9RJtKfp6Xj8aGiaJUlIqkgxRDzYCAKMWMVBqIthEPZcUiy66n//3/11O/P/5yHl0HGXciY07vdWf21TZypG3z/oBJz4494Pym375w2c9fbCv1o1vWMsfFgQ3DFOvv0jV5USD90xTu7s4ObkDbHlw/iRXo5nSVJFkXLTmZIiTSyroiglKW+QSooyMYyJYZSU2sQyKopSklR8f9NDs4JNdGHAeglCfRIGYQ8VrTp06t0XQ6riwY+/qdRcQkXQcyxw6usGkiYH/ShzN7HnL7te4EX+2sJFj055UJ4OrQcKCcIRn/+wz3fI5z/k9R32+esiERVF6mhGSZE6mtbQtJIkDQwj55mRYZQUpaYoq1KppEgtTWtpWkGSBoZRU5SCIk0Mm6hdIYTQ+WEQ9jgSF/Ot+dC9c8OTWT//821T1W2WWDqXwNlw9dcNUS+fNlf9vWLLkxXfDrcMvW9Cj5sOJiaKxwOBw02Zd8jnqwqGBmnUI/T64XrdbQPzhut1xTod1au6XyOEei8Mwp4lduqw66MXY9ZBC4a++tY8U4HuosIg6ubOrHe4j/jZqdJa1Zr/VO+eVzCrh/QF5UTxWJvYy1Yqh+t1E0zGHwzIeUpfjLGHEEohDMKeQq4IhvZsUC6577+rSh4aTs7MunA2JDqFxoaFPp/4hTPkWpJ71S8n3Z2q4YDnib0RBv3i7MyHi4eONOgV3djhECGEzg+DsEeIVR9xffQik12QsfyNm3dqJlrgZ8UXiAq5U+jpdXbPANfHIz82W0w3FV83JaekO1tBOVE8Ew4f8vrL3G6MPYRQL4VBmGKJiqDx+ntVo6f+rlw8GxQ3XXXefxcJ3AcD+9acalQ3fl70+ajC4t8VPzzQMKCri5qIPblXy2Gf76jfb1W0iL0Rep0Su6gghHoVDMJUitUcdX30IpM10Lr8DVKj/6pG/EeluOtaij13Dcpd6T+04pSTc20u+H7ihFGvDnlWz3ZJh/62sVfpD2QoFHLsXWlNf6BwMMYeQhdDFDk+Fkrew8d8kpS0SisfFfjWq1vzXFASuVY7uag/+UQAAJC4qK+9Vwy23im0+yohUYi12snF/CCJgiCQJHme9fxEkW/7KheDi3ou4yw+FhRFHgAKx981eOxPLuMK54JBmBqSwPvX/Tu4/Vvj9T9XjZkGAEc90s9Kha//m85Wt/+xqz/pOPzlqaA7cqTowNgpw14Y8iRJdFqTIy9Jp0Oh88fecL0OBySgbsPHAmLTsgZhfy0pagBAEgUuFpB3ikJU4MPxg7mQKMQzg4t64weIPN/i4EjT/tYhIX/vJx62jaVWX9w8F04OD0kS+Ji/5QWDkti8UANJMjSrTj6AZvVE0u8vRSuoNvf1KVpNtpn4iVHoiNa/+ASj0Lc6jCBphtW22klSCkZhaLVTpc1q+yo0qyUIKhaL0TRNnvvWBknSNKs517PnwSiMl3EWzWpIkgYAhdpyGaef78qdezl0MbjaKtdHL9Lp2dblb5BaAwC4o3D1d8JzJVRJejspWFlddWjVSdUZTf3Is7PuuOIqw39Fo9EOpqAgSRUezxaHc4fTdcjnOxUM5avVIwy64Xr94qzM5UWFQ3VaFu/t9UKiwPFcc+VD5MOC0DwhX3JgAAAf80tS8xo6sYi3+UKSyCV9ubcKj1Z1C54Li8mvEgtKEp/0VKzVy0lScyVGFDmBi19Z4CMCH78OzWrJpmUNKEYvfx0TJJX4ficpBUXHh9jSjJqk4lPwMAo9ANF0sK7pYDaRASTJ0KYWX98Mq4PkWKJYimkxeLfVFzfNqJLDgyAoumXDDM2qSbLXTwmEk26jLiEJfOD7Ff5NKwyLbtNMXSTvFCS45Xt+6UDif4a2CB5RknZU7Tm6pmbA6XymmJ782AiTfioACG2WsrxInCjucXs2Oxq3OBq3O115atXMdMuSnOzfDi8uwti7dIl6gyQ11zwSWcJzAblOkPhyl8R4REmSlKi18LGAnA2JLBFFTogfJnLReBRxUR+ACElJlqgPSWKLxCIphmaaKx8kraKo5okUkgMDAGhWRxDNX3OsMqm6QJBM0pc7STLJf/u3qluotJlk8quwGoKIf7dQtJJqmskh8XIE0VygH7Q3AAAgAElEQVSJIUmGYjRtD06Gc/qgLoVB2H24+mrXv/5C6c3W37xGGcyJ/ct3CbwIz5Y0fx8FudCayo0nN50dXztxUOHASY+NUhkuc1IYXpL2ebzrbfbSRud2pytTqZhmMS8ryH//iokWRX+cbltOF4EPCXyYiwZ4LijyES4W4LmAwEf4WJCPBQQ+zHMhLuYX+IjAhbmoR+AjAh+JRTwEQfCxkChyAEBSLM2ooGWFgFHo5XsqNKMhSAaSWr0IorkdiVXGaxg0oyVICgCUGmv8MJKmGQ20TItEhCTqIiTFUrS61WEIocuAQdgdBK/Tv+mLcNkmw3V3qSfMSX7qwxPi/1VLu66jKQIA4Ky/7suj39aU1c0/u3BW3qDRvx6itFxyXIUEodzt2dboXG937HC6inTa/7KYbxuY994VE9LY3h5+UiziE/iwwIe5qP/iYswrx1hTnsVYpZ6iVRStYhQ6ilZTtJJR6GhGQ9JKhtXSjJZVpdGMmmF1FK2kGBWjMFC0kqKVUY7WarWtKlUIod4Og7Br8c56/4bPwvtKNVfMy1j+OqUzJT9b4ZR+vVPYsIg2sVJZw/7Pj64MV3GLaxdP1c0o/EmuvkB9rsu2FeSF/zidpY3ObU7Xf5zOYp3uSmvGL4YM/mzKFb1o+YJIoMHTeNjrOORrPMpxwfZiLMoqDReIMaWJZjU0q6VoJc2oGYUce0pGYTxXy9tFEv1+VokNdAj1NRiEXYVrqPFv+DRyaJdmysLMx94mNa0br2xhuG6d8NfJXJVz4/PbVmYHs//77CI9r8u/xmoZ07pnV7sCPL/D6Vpvd5Q2Ovd6PHL4PVxU+F+Wyb2ie6ck8n7XCTn5PI5DXvtBADBkjDSmj8jIn8UodPEYo1pUy1JdaoRQX4NB2Pm42pP+71dEK8s1U6/K/O0/SVXrTswAwIlw47raWcZ1H1Wsn6gZd7ftbrqWHTAv3TrJRJDnmxrGx/E7GhvX1jfs9PoOen0jDfppFvPTw4unWcw9f0gfF/N7HUf8rmM+Z6Xbts9jP8go9CbraGPG6CFj79CbizSG/FSXESHU72AQdqZo1SH/hk+5+lO6mUtNNz5AMO3fkDvgOPxo6UoicmCSed7M8B/82yOZk9IG3JpOKdrvt2mLRHe53NuczvU2+/FAoMRkmmTQPz28eEa6pYd39YwEGtz2/T7nMZ+z0mPfH/TWaAz5xozRJuvonMKrjRkjk/s3IoRQSmAQdo7osQrv6g9Ev1s7/VrzsicIup3bcpzAbazZ+u8jXzZGeE9s4Tvm291rPIrRiqHLBzC61v8Q9ZFIaaOztNG5rdF5PBC4Ii3tyoz0v44dPSnNREpSNBpVq3tchIgiF3BXuW375Tqfq76cIGm9uUhvHpqRN6Oo5D5dWmGbscAIIZRiGIQdI0mRwzt9az6SBE43+3r1hDnQpooW4sJlDft211dsPr19VMawuYPuWrEh9wVXoxjjxzw4WGlurjXWhSNyta+00dkYjV2RZppmMb81Ydw4o4FMmuXosscRdjou6vM2HvXY98l1Pq/jkFqfqzcX6dKGFoy6dcK8FxXq9FSXESGELgCD8DJJAh8u/963/hNSrdcvuFk5fBIkZZUoScddJ3fXV+yqLz/urhphKb4ia9xbC1/0nVDt+VfDQ0bP8B/HO4VWBYNytW+dzR4WxOkW839ZzD8dVDDeZOyBC/TJTZ1u236Pfb/PeSwWcevNRXKdL2/YD0zW0diZBSHU62AQXjKJ50K71vm++5gyZRiv+YlyxOTEU+6Id5/94J76vf+p3c1S7ITMMUuLFl+RNV5NqzwnAjX/dByzeblp1pzp1L9t9tJdzs2ORk4Up1nMV1ozflE4eLhe36PCTxS4gKdKjj23bZ/XcZhmtSbraL25KKfw6pHTRuvNQ6EbV31CCKGugEF4CaRoOLhjrX/jZ0zuEPMdT7B5RQAgSMLhxsrtZ3eXNew7668bkzFiau4VPx55o1WTDgBRN2fb6G7YffqUgXvXLB4eEArFjpm2sDPSzfOs6c+MHJbXk271RQINvniXzv2t+rZkDZpnSB+pUKWluowIIdTJMAgvihj0BbauDGxdqSgcY7nnT0xmXl2goezE2j31e8sa9mVrMydkjvnZuNvHZIykSQoARF5y7PNuL6vf4ncdzOb2jPADoWTEtL+MzZ2bMTZb1SPaDyVJ8LtOeOwHPY6DXsdhr+MgEJQxfbghfWTmwNlFJffpTIMJEj8hCKE+Dr/mLkDwuwPffxn8z7fKEZP09z9XCf5tZ9du27EzJnITM8fOzp/260n36pKWOzlU7V6598xWR2OZPqwyUdOHW2bqs2zHzAM1mndmUGmXP6tJJ5BE3uc65rEdcNv3e+wHvI7DKm2mMWOUIX3E0Al3G9KHKzXWVJYPIYRSAYPwnHhnQ2Dzl4GyTQ3jxh+94dpy97GjWx4rNhdOzBr7+xmPFKUNSRxZFQxurnNsPN6w3tfIS9IVCsNVk/PeGJydr1avqBbv3SY8Mob6xcjzjpPvGpLI+90nEzf5kgewF5XcZ84uYZWmC18FIYT6NAzCdnD11Wc3frT3bNm+gsyyMbSWqZrA6W4ovnpi5li2aRGyxFCH1WdskRg/yqucqTb/eszkMSMscveRiAAP/EdYc1b6dgE9ztxNIZgYyZfo3qLW5+AAdoQQOg8MwmZRIbb38IYd+7/eG6l3quixk8aX5E68N3tCetNqyPWRSGl97XqbfZ3NHuT4ElE/ppZ9WRowZUxmxmIjrW6e4eyoR/rhRqHIQOy6ljZ05XoP508+k3VUYuVShBBC7cIghLpAQ1nDvl0ntpQ5D1ujxHjL8Ifm/Gxk5mh5DHtDJPLZ2drEIPcZFsu4mOa5ugH5Z8n0MQbrUpMmu3XPl/ePi7/aKTwxlnpgZOfPoiIKnN91wlFbHvIcddv2yWPYk5IPR/IhhNCl6adB6Iv6y23799Tv3VVfTvL8CI8wwS/dX3J7xtSrgaTs0egXtXXyOPfTofCkNNM0i/lWbXbmfsG5yqsdoMqcYjIv0xNU6wZPPwd3lwp7ndKmq+iRps5pDuVjAY/jsMe+L3lIgzZteHrO+JzCq03WMR1ZVwghhFA/CkJREo+7q8oa9u2p33vUebzYXDiWTHvoNDUoqtDNWhoc+V873N5th47KE1vLc3u+NWHcCErj2uuzfeMWeZ/qCuOERwrbzgsqK2uUbtooTMkgdl9HqzvwvspLNLRKPrnOVzDqx2mZYyWgeuZcowgh1Bv1/SB0hd276yu21+4ua9hnVpmm5lxx87AlhWcc4Q2fhXTRo5NueVltWW+zH1uzfpI5Hn7jjAZCAu+JYMNK994T9WnDdAXXZBoLteeaREUCeOWg+Me9wqtTqR8OuuTm0MSMnXLyhf31ekuxyTomI2/GkHF3GSzDWq2H3nPmGkUIoT6gbwZhVIgddByRR7vbgo6x1pETs8beP+FOM6t37Pzu+399+L6lYNvoJcc5cVKUvtLAyKs6MCQJAGF79PQqu223W2FgMqeYCm/KOdfqSLLGCCzbwtvCsONaepDuoppDWydfoEFvLpKTD5doQAihbtYHg/Cf+z/+9Oj/FZsLS7LGLZ9832BTQYgXtzfUPfv91lJHY6XKOHHMwuk5uX+2mJPX8xMiov2gx77HE7JFMyYYx9w/SGm5cHfPzfXSrd8LSwcSX1xJsecIL54LBj3VAU+1z1npsR9w2/cLXCgxb9mwyb/UGgfijJ0IIZQqnROEDodj3bp1Go1m/vz5SmU7vRY5jvvuu+9cLtfcuXOzs7MT+6urqzdv3pydnT1nzhyqkxZYv27owh8NXyISzPZG54d1ztK9W3Y7XUWBxqkq6veTJs8eOlyRvFKSBL7qkH2Pp3GfVz9QnTnFZB6lP/8a8TJRgr/sF/96UHhnBr1wQPz4WMQd8FQHPacC3pqgpzrgORXwVPMxv9ZYoDHk681FecNuGD3zdxpDXqf8pAghhDquE4Lw8OHDM2fOXLBgQX19/dNPP11aWqrRaJIP4Dhu9uzZADB06NAHH3xw9erVV1xxBQCsXbv25ptvXrp0aUVFRVZW1sqVKwmiEypGq+3+107s2+/1jddrp/oafn5k65T8QemLb6Yt2cmHxbycvczT8B83SRMZJcYJjxQy2ot9N2xhuHODUx09/d3oM2zD6fLKGp+z0uesFIWoHHgaQ745uyRv2PUaQ75aPwCbOhFCqMfqhCD84x//uGzZsueff14UxRkzZrz//vv33HNP8gErVqzweDwVFRUMwzz33HNPP/30t99+CwCPP/74n//85zvvvDMUChUVFW3atGnOnDkdL89AjeZ3eZkj9x8RN25UT5itu/cPlMGceFbkJdchn323x1cTsow2FN8+QJt7gSHn8poMQe/poLcm6K2pb6wJuqt+TFPmtPzQ6XzCkG+yjskderXGkK8x5He8/AghhLpTJwThN998s27dOgAgSXLJkiWrVq1qFYSrVq269tprGYYBgBtuuOHxxx+PxWJOp7OsrOz6668HALVavXDhwm+++aZTgnBU+Xf+zf+nnn619vF3SHXzdNihhqh9j8e2y63JVmZMNBbfNoBseVtPFLhwoC7orUlkXtBb43Meo2iFxpCvSxuqTSvaTl/1BZn3x+sHzxyg73hREUIIpVxHgzAQCPh8vpycHPlhTk5ObW1tq2Nqa2snT56cOEAUxYaGBofDodFoTCZTYv+RI0fO9Soej+e9997buHGj/DA3N/dHP/rRuQ5mx8+2TFlEKFQCgMBxfFhw7ffbd3q5AG8ZZxhxX57CxIhCzO8/FfTW+F3H/K7jId+ZoLcmGrIp1Fa5MVOtz8sctEitz9OaBsvzc54Owq2bwaKEL5ZAmgI4jrvc96yjBEHgOC6FBei38G1PFXznU4LjOIIgRFFMdUE6hKIokrzAzamOBqE8pi1xb4+iKJ7nWx0jimKiHHKPGJ7nBUFIviPY7okJHMf5fD6Xy5U4+Hxj6TQGCQB4wXcy5Kzwu47alANdyrFuVmVz+k+f2Xwm5DstZ55anydnXnrebF3aUJU2u93l9wRB+OoM8cBO4tcjpHuHSQRAagfyCU1SWYh+Cd/2VMF3PiX6xtt+wRSEjgehwWBQq9V2u13uC2qz2ZI7hcoyMzNtNpu83dDQAADZ2dkMwwQCgVAoJM+Q0u6JCenp6ffff3+iWnl+9Ue3n9q52ms7KbJ1HFlH5ZAazUAhWqBR5afnXqE1/lBryFdqMy/yB4wI8PAuYc1ZafVCqtsWkTg/+W+Idnvnoi7FcRy+7SmB73xKSJLEsmxn9efvyTrhHuHs2bPXrFkzduxYAFizZo3cQVSSJLvdbrFYKIqaPXv2u++++9RTTwHA2rVrp06dqlQqc3NzCwsL165du2TJEkEQ1q1b96c//anjhQEA++FqINjCWdel5RVqjQM7suRety0igRBCKFU6IQgfeeSRxYsXx2Kx2traioqKd999FwBcLldmZuaxY8cKCwtvvvnm559//tZbbx0xYsQLL7zw/vvvAwBBEI8//vjPf/7zY8eO7dixQ61WX3311R0vDACMWXpzp1ynSxeRQAgh1EN0wlf8tGnTtmzZAgCFhYVlZWUWiwUAtFrtO++8Y7Va5e1du3ZNnDgxEomsXbv2qquukk+8/fbbP/nkk0AgMG/evC1bttB0T5nmxs/BLZuEP+8TN11FYwoihFDfRkiSlOoyXNiUKVNefvnli7xH2EGJRSTenEZ1ZBGJriMIAq4+kRJ+v1+n06W6FP0RvvMpEQ6H8R5hbxXz1XMhN6OxMJq0dnuBnksHF5FACCHUG/XBIGw8vLrxwEou6OSCTkqhZbQWRp3GatMZjZlObGjiG2TTeu6XsYgEQgihPqAPBmH25DuyJ98hb4t8JOZ3cAE7H/bGAo6Y3x6yV8YCjpjfxkd8MZ9NEmK0Uh9RWitClpsNhskDrcoj6Q6lgdVlMNp0Wmlgdem4NARCCPVhfTAIk5G0UmkaoDQNONcBPBd5tdzzxaGGp8c4x2j9sYA96j4TjByK+e2xgF0Ie/mIn1bqKJWB1WawugxaqWd0Gaw2g1bqWV0Go81gtGaC6Ptt6Agh1Ff18SA8P1sYbvue5kTLpzdZs9XtV/tEIcaHPHzEywUcMb+dj3g5v8PrOCFXMTm/jQu6KIWW0aXTSj2rs7LadEppYHUZrDadVhkYbYbCkHVJtyoRQgh1p/77Bb2+VvqfLcKdRcRvx1HUuds+SYpldRmsLgPSC9s9QBJ5Lujigk4u4OBCLi7ojAXs/jNn5A0+6OJCLlplZDRmWqknKJZW6gmapRgVyapJiqWUOpJiSUZFsRqSZimFlqSVJM1SCh1BMZRCQzIqksLB/Agh1FX6YxDyIjyzV3j3mPTxbGp6Zkfv/xEkHU9KGHaOQyQ5KfmIVxI4PuyVBE7gwmIsJAoxIezj+KjIR4RoQBQ4IRoQ+YjIx4SITxQ4MRYSuJAkcHKIUqyKZNUEQROsllGo5PgkKJZWaElGQdAKWo5PVkMyKpJm5bNIRkWxaoJiaCWumIEQQq31uyCsCUg/2iikq4jyJXSaontek2A0ZkZjvvCB5yaHqBALi7EQz0UiARdDgchFhGhAEjk+GhC5qBj2Rd1nJZETYiExFhIFjo/4JCEmcmEhGhQFToj647VPhYag5NqngqQVBEVTrAYA5IcAQCm0BEEBQVBKHQCQJEOy6pYHaOT23ni4kk1XYJQkzQIAxWoJEm+dIoR6gf4VhCuqxXu3CY+MoX4xkuxdPUFppQEAGA0AgCAI9OUOqBebap9SvPYZFfmoXPUEAJGLiEIMAIRoQJIEkCQh7AMATmw6gI+KfDR+gCgASHzEDwCSmHQFPgYAQkw+IF5ygqQohQYACFohD1mhWHVzlBIEQVJJYRwf00KyKoJikstPNCVuMkqhJYgW4z5JWkEyreZoJmhl6xHZJKNuc/14OdtcH0O9vxO5sPzb0X8I0QgvMhJFAYD8h3iqSxTHai0kc4EF1S9JfwnCxCIS3y6ge8giEikhV+nkcOoefMQLAJIoCNEgAIh8RJKjNBaUk5IPNx0Qkw+IinxEPleMhcWWv3uSyEdiwVYvIUQDktRiyTSRj4pcpOVR8cxucRgXkoQWq9wlytniR4j6Qbq0JdkoVtNVPaRIklZoL3xYG3w0AD1+YTkhFpTEcy7Hllr98G69JEmJxfIIiqHYzsyejsiceGvW5GWdeMF+EYS4iEQKJUKXUaeltiQdd/ETfXXhF7oo8tHAZZxHK7RwEQuzpda5/oDAKdZSAqdY6ztwEQnU/dq233YiWn35K4shhNrqy0Ho5+DuUmGvU9p0FT3S1H+bQxFCCJ1Hn60klTVK47/kKQJ2X4cpiBBC6Jz6YI0QF5FACCF08fpgEH7y//ZlnGncN8pgbjQKpJ5MNxCabhowiBBCqNfpg0E4Z9YAXQ0FDh+383jE7hUdPiBJMkNPZRjIdD2ZYaAy9GS6gTRrgcAmU4QQ6u/6YBBmDE6DwS166kvBqOjwCnaf6PAJVTZu53HB7pU8QcKoSaQjma6nMvSk1UiocIAFQgj1I30wCNsiNApKk0ENzGixlxdEd1Cwe0WHT7R7uWp7xO4TG9xAkWS6XGtMBKSBtOiw+ogQQn1SvwjC9tEUma4n01vPQ92i+njKzu06cc7qY5aJUDDtXhshhFBv0Y+D8BwuofpY5wKGaqf62CZcEUII9VgYhBfnQtVHodbFHzoj2H2i3QscH68+ZqdRuWnxdEzTAoVjORBCqMfBIOyQdquPUjAiJ6Jo9wpVttiO46LdK3pDlEVHZhhIq4GyGkmrgbIaSIse0xEhhFILg7DzERolXaCEgtaNq0KjX7R5RZtHaPBw+6oFu1dyBQijRs5F0mqgMgxkppFK1wPd92e5RQihHgKDsLvQFJVppDKNAPnNOwVRdAUStx5jJxqEpluPVHYalZPW3DEn00QosWMOQgh1PgzClKLIc916FGpdQp2r3XEdRJZJSNcKA9Jx1CNCCHUcBmFPRGgU9NAsemhW8s54x5xaF3/WKVVUB9cfEhs8QBHJ3Vap7DRqgBnTESGELh4GYa+R6JhDCQJEo2q1GlqOeuSP1UU3HRJtHiCJ1oM6ctJIYxeukIcQQr0XBmHvdo5uq23mBDjrlHihvRlz9IAT5iCE+jcMwj6o/XQMRASbV7R7RJuXP1onbjks2L3Ai6TVSCX6rGYYSKsB644IoX4Fg7C/ILRKWquEwdbknVIoKtq8ckBylXXilsOizStFuORcpKwGMsNApumw7ogQ6pMwCPs1Qq2gCjKoNkMe4/PJ1brON9tqThqVacQJARBCvR0GIWojMZ/ciAHNO1vOtho7VifUutqfizw7jWDxc4UQ6jXwCwtdnHZnW205IUBiLnJCraBy0lqkI04IgBDqqTAIUQecY0IA0RMUal0t0rHeDXTTQo/ZaVROGi6DjBDqITAIUecjjZq2XU8TEwIItS5u94mI3df+hAC5aYRakZJiI4T6p04LwuPHj7tcrnHjxrFs+3/jOxyOEydOFBYWWiyW5P3BYFAQBL0e1/Dr49od1CF6gqLNK9q9gs3LHzoTnxCAJql0A6FXEToVqVUSOhWpVxFapfwfqVcRGmWqfgqEUN/TCUEoiuJtt922devWAQMGnD17dv369UOGDGl1zAcffPDQQw+NHj16//79f/vb32655RYAWLly5S9/+cuTJ0+OGzeuvLy84yVBvU687liUnbxT8ocFu0/yhyV/WAxEJF+Yb/CI/rAUiEiBiOgPS6EoqWuKxnhMqkhd00OdkpCfVeBdSYTQhXVCEK5bt27r1q0HDhzQ6/W/+tWvnnzyyY8++ij5gFAo9MADD3z11VfTp0/fsmXL0qVLly5dqlKphg0b9sknnxw6dOivf/1rx4uB+gxCp6J1qvMfI8V4yRsS3UEpGJFCUSkYFT1BsdouBaNSMCrvkUJRQq0gNAr5/6RRQxg1pCaxR0maNKRJg4teIdTPdUIQfvrppzfccIPctrls2bKJEycKgkBRzV8u69evT0tLmz59OgDMmDHDYDBs3LjxqquuKiwsBIBjx451vAyovyFYmmivn04yiROkYCQejcGI6A2J7qBg90mh+E7RExTdQYIAQqNsSko1oVYSGkU8L40a0qghNApSrwYSJxRAqG/qhCA8c+bM2LFj5e2BAwdGo1GbzZadnZ18QEFBQeJhQUHB6dOnL+klwuHw7t27A4GA/NBkMk2YMKHDBUd9HMFQhFEDF5oxTgrHJF9IDEQkfyTeGOsPC2cCbRtjJTXrU7KkWgEsTTAUoVYATREKmlCywFCEiiUUNNAUoVYQDE2wFKFSAEMRCoZQMjjzAEI91kUF4aFDh5566qm2+//617/m5uaGw2GFIt7NT6lUAkAoFEo+LBwOJ/egUSqVrQ64IKfT+d577yU61BQUFPztb3+7pCv0JYIgRKNRURRTXZA+REODRgtWbavdBAABQAKAKEmBSMjhVtGsGI4RnCByAoRjwAnACVIgRAiiFI5BTACOhwgnxXjgRSkUJQRRinIQ5UGSQMkQLC1RJKFRAk0SLA1KBhgKWJpQMhJFEmoFMBQwFKhYgqEkhiJULFAkoWKBpYGhoL+OxQwGgwSBNfLuJn91Jzfv9UZKpZKmL5B0FxWEVqv11ltvbbvfYDAAQGZmptPplPc0NjbKe1qdnjhAPiYrq8VKexeUm5v78ssvT548+ZLO6qsEQWAYRl6GCXUfvQ50Sp1Od5mnC6IU4aQoB7wghaISJ0gxXgrHgOOlKC+FY8ALUjgmBWPAxQ8gYrwUikq8IMoncoIUjhEsDYxc6aSAZQgVS9CkPBwzPuxEQRM0BRRJKFkAIFQskATBUMDQQBLxI5UsQRFAU3J/IvlEuTrbOe9VZ5MkSatt/WcK6moURfWBILwYFxWEFovluuuuO9ezJSUlmzZtevTRRwFg69atI0aMaPWRLSkp2bdvn9/v1+l0Pp9v3759JSUlHSw3Qr0MRRIaBaHp6BBJKcYnkhJinBSOSZwgRTgAkEJRAJCiHPAiCKIUjACA2OgDUZI4HjhBEiUIxwBAisQkQQJekKJJJ0Y4EESgSHkOoHg6sjQwNNGUoKBiCZIAhiIYGgiCUMuxygBFAU22G6uEWiHX5Qi1AggicUAilRFKuU64R3jHHXc8//zzv//974cPH/6b3/wm0Yi6YMGCxYsX33fffcXFxfPmzbvlllvuuuuu//3f/50/f77cTaampubf//73vn37bDbbn//854KCghtvvLHj5UGoDyNYGli644F6ToLYJlYFSZCkSAwAIByTRAk4QeJ4ECWpKVYhwgEvitE2eQwghaKSBPH9kpQ4IHF6cyKSTRlMUyBnKkPJ89YKhBRUKwEAGJpgKICmim8ihuMbJAAQSlbu2USoWTl6yfjbRSTet8SkDYljUH/WCUFosVhKS0tfeeWVysrK55577qabbpL3L1myZPjw4fL2Rx999NJLL33wwQeTJk166KGH5J08z7vd7ry8vB//+Mdutzs9Pb3jhUEIdQhFymnRhVnbSiIRxaYM5gWQM5UTpBgPAKIvwFAMAADHS5wAyUEb4SDCAYDo9IMgAoAUjjUnrgQAIAajAAAgSfGNpjAGkELxgwklCxQB8p8acsSyNDA0ABBNld3kWmxSlCrkFcoIJRtP4kRtWG6Rjkc7DQDNdesWqcwCEMknom5GSPJfaz3blClT8B5hgtxZBu8Rdj+5eT/VpeiPuuGdlyIxECSQI1YO1BgPHA8AEi/KbcjNmZ0cpYlwjcTiJ0Z54AUAkFukIR7tPABITRXulqkcA5Ag0ToNkGigBgBC1RS0iWAmmmMYlAwhd0imKEIRr9g0Z3PTKS0iXMkASUJSPENzpRmAZeJ1bpKIgsgwDJXU7t1X4VyjCCEEct8i6M6q8Hk05yVI4Xi9tjmYpeYYhggnyfibzLgAAAsiSURBVNkpCFKUj5+SiNgYB8EIAIAoiQ2e+M4IB6IIABInQCx+SlOlGSDKSbwQPyUcjcrtxk1Vc4AWIZ1ozY5vJ7I2OaqTt6HNNpG8HX8g9/CKbzfFNiS1flM5aW1nM+4IDEKEEOphmhqoIaXB3P7wCb45cUFoqisDgCg2V5eTozp5G1puB1vub2qelHt4xfc3xTYk1ZiZyYWKGcM7/gMmYBAihBC6aDRFJN3IJOACsyH2CjjbBUIIoX4Ng7D3OXXq1IYNG1Jdiv7o888/93g8qS5Fv+Pz+T777LNUl6I/2rRp04kTJ1Jdiu6AQdj7bNu27eOPP051KfqjN9544+jRo6kuRb9z4sSJV155JdWl6I8+++yzLVu2pLoU3QGDECGEUL+GQYgQQqhfwyBECCHUr/WOmWVyc3P1ej3OpSJzuVw+n2/gwIGpLki/U1lZOWDAAPwcdrNwOFxdXT1s2LBUF6Tfqamp0Wq1ZrM51QXpkKVLlz722GPnP6Z3BOHRo0cDgQAuSCYTBCESiWg0nTmxAroYPp9Pp9Ph57D7+Xy+xHKkqNuEQiGWZS+4mF8PV1BQkJaWdv5jekcQIoQQQl0E7xEihBDq1zAIEUII9WsYhAghhPo1DEKEEEL9Wu/uDtTfnD59es2aNYmHCxYsyMvLS2F5+rZwOLxv377Dhw9PmDBhzJgxif1er/fDDz+02+2LFi2aNGlSCkvYVzU2NpaVldXU1PzgBz8wmUzyzh07duzfvz9xzB133NHbezP2NG63e/Xq1ceOHUtPT7/xxhvT09MTT61atWrHjh1Dhgy5+eabGaYPrtCLNcLe5MCBA08++WRZE6/Xm+oS9WXz5s1btmzZo48+unbt2sTOaDQ6derUTZs2sSy7ePHiL7/8MoUl7JPcbveAAQOeeuqpu+++u66uLrH/888/f/PNNxMffrFpjTrUWZYuXfr5559TFFVaWlpUVHT8+HF5/7PPPvvAAw/odLp33nnnhhtuSG0huwj+SdXLDBo06K233kp1KfqFjRs3six7zTXXJO/8/PPPGYb59NNPSZLMy8v7wx/+sGTJklSVsE8yGo0+n49hmNbrwQIsWrTomWeeSUmp+oOVK1fqdDp5+5prrvnnP//57LPPhkKhF154Ye3atSUlJffee29ubm5FRcW4ceNSW9ROhzXCXsblcr322msff/yxw+FIdVn6OJZl2+7cuHHj/PnzSZIEgIULF1ZUVLjd7m4vWl9GEMS5Gt8OHTr06quvrly5kuO4dg9AHZFIQZlCoQCAiooKmqZLSkoAQKPRzJgxY+PGjakpX1fCIOxNlEplUVHRyZMnP/jgg+Li4t27d6e6RP1OfX19RkaGvG02m2maTm6+Q13HbDbrdLqqqqonn3xy/PjxeF+g66xfv760tPTOO++Elh94ALBarX3yA49No73J3Llz586dK28/8sgjDz/8cJ/866wnoygqcXdKkiRJkrDLRvd49NFH5Q1BEKZNm/bqq68+8cQTqS1Sn1RRUXHrrbd++OGHOTk5AECSZPLtWEEQsLMM6kFmzpyZuJuNuk12dnbiL+KGhgZBELKyslJbpP6Goqjp06fjh78rHDhwYNGiRa+//vqiRYvkPTk5OQ0NDYksrKur65MfeAzC3iQWiyW2165di/Pxd7+rrrpq1apV0WgUAFasWDFjxgycDLp7JD78HMdt2LChuLg4teXpeyorKxcuXPjiiy8uXbo0sXP8+PFKpVJueWpsbNy6dWsiI/sSnHS7N7nttttsNlt+fv6RI0dOnDixevXqsWPHprpQfdZLL720evXqvXv3mkym/Pz85cuXz5s3TxCEK6+8MhqNjhw58osvvlixYsXMmTNTXdK+5oc//KHL5dqwYcPkyZM1Gs3nn39uMBiKiopGjx6t1+tLS0tNJtP69eu1Wm2qS9qnlJSUVFdXJ75SZs2a9fjjjwPAO++889hjj11//fWbNm2aMWPGm2++mdJidgkMwt6ksbFx586dDQ0N2dnZM2bMwJWYutSRI0dqa2sTD0eMGCE3CnEct27dOofDMXv2bJzQoCts3bpVrnPLZs6cyTDMyZMny8vLg8Hg4MGDp02bhothdbodO3YEAoHEQ6vVOmrUKHn74MGDu3btGjJkyIwZM1JUuq6FQYgQQqhfw3uECCGE+jUMQoQQQv0aBiFCCKF+DYMQIYRQv4ZBiBBCqF/DIEQIIdSvYRAi1O+89NJLn376aapLgVBPgUGIUL/z9ttvr1q1KtWlQKinwCBECCHUr+EKMgil3rFjx06fPm0ymcaOHZtYmV0URa/Xq9FoaJouKysLBALjxo0zGo2tzj1z5kxlZaVWqx0/fnzbxYTdbvf+/fsJghg8eLC8sE6y6urqqqqqIUOG4FxxqF+TEEKpc/LkyUmTJgGAvK7h0KFD9+/fLz91+vRpAHjmmWeGDx8uLwKn0Wg+/PDDxLl+v//6668HADk7MzMzV61alXg2Go3ed9998ony/3/xi1/ITw0bNuyWW275yU9+kpixc9myZd35UyPUo2DTKEIpEwwG582bF4lEysvLY7FYVVWVxWJZvHhxOBxOHPPMM8/cddddPp/P4XDMmTNn2bJlBw8elJ+65557vvnmm/fffz8UClVXVw8ePPiGG25ILNT34IMPvvnmm88++6zb7Q6FQvv3758+fXrisitWrIjFYmfPng0EAo888sg///nPTZs2defPjlAPkuokRqj/euuttwDg0KFDiT1Hjx4FgK+++kpqqhHOnz8/8WxjY6NGo7n//vvlbYqi7rvvvsSzp06domn6oYcekiSpvr6epum777673dcdNmxYfn5+NBqVH0ajUY1G89vf/rYLfkSEegG8R4hQymzdulWr1ZaWlpaWliZ2Mgxz9OjRa665Rn545ZVXJp4ym83jxo07fPgwAFRWVgqCMH/+/MSzAwcOLC4u3r17NwDs3LmT5/nrrrvuXC89YcKExA1FlmWzs7Pr6uo69YdDqNfAIEQoZTwejyRJn332WfLOmTNnmkymxMPkbQAwm81VVVUA4HA4ACAtLa3Vsx6PBwD8fj8AWCyWc710q1VtaZoWBOGyfxCEejUMQoRSxmq1AsCaNWsSPUXbSl4cGADOnj0r9/CU/9/q2TNnzgwePBgAMjMzAaCmpmbChAldUHCE+hTsLINQyixatCgYDL7//vvnOebTTz8VRVHerqysrKioKCkpAYCioiKdTvfhhx8mjty2bVtVVdXcuXMBYMqUKUaj8c0335Rw5W2ELoR6+umnU10GhPqpoqKisrKyv//978FgUJKkmpqatWvXLl++fNSoUVlZWT6f7+WXX2YYZtu2benp6eXl5XfccQdN0++++65arWYYhiCI119/vba2VqvVbt68+ac//anFYnn77beVSiXLsmaz+W9/+1tZWZlarXY4HN98883q1atnzZoFAK+99lpOTs6SJUsSJXnttddyc3PPc08RoT4Mm0YRShmSJL/88svnn3/+3Xfffe6551iWzcvLmz9/fvLw9qeffnrPnj3XXnttKBSaNm3aG2+8kbjz98gjj+j1+pdeeuntt99Wq9ULFy586aWXEiPu77rrrrS0tD/+8Y/XX389SZIFBQXLly+XnxoxYsTAgQOTSzJixIj8/Pzu+JkR6nkIbDlBqCfgeV4eU59w5syZvLy8Dz744NZbbwUAQRDOdSux7bnJ5JZVksT7IAi1D2uECPUI50ky2Xk61Jz/XIxAhM4Pf0MQQgj1a9g0ilAPFYvFDhw4UFBQ0GqwIEKoc2EQIoQQ6tewaRQhhFC/9v8BELxwdd8TzMYAAAAASUVORK5CYII=", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n_epochs = length(losses)\n", - "n_parameters = div(length(parameter_means), n_epochs)\n", - "parameter_means2 = reshape(copy(parameter_means), n_parameters, n_epochs)'\n", - "plot(\n", - " epochs,\n", - " parameter_means2,\n", - " title=\"Flux parameter mean weights\",\n", - " xlab = \"epoch\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Note.** The higher the number in the plot legend, the deeper the layer we are\n", - "**weight-averaging." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/weights.png\"" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "savefig(joinpath(tempdir(), \"weights.png\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieving a snapshot for a prediction:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3-element CategoricalArrays.CategoricalArray{Int64,1,UInt32}:\n", - " 7\n", - " 9\n", - " 5" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mach2 = machine(joinpath(tempdir(), \"mnist3.jls\"))\n", - "predict_mode(mach2, images[501:503])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Restarting training" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mutating `iterated_clf.controls` or `clf.epochs` (which is otherwise\n", - "ignored) will allow you to restart training from where it left off." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mUpdating machine(ProbabilisticIteratedModel(model = ImageClassifier(builder = MyConvBuilder(3, 16, 32, 32), …), …), …).\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.4449181129617429\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.4575672614002921\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mSaving \"/var/folders/4n/gvbmlhdc8xj973001s6vdyw00000gq/T/mnist1.jls\". \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.4693455717095324\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.48012884529192995\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mloss: 0.49023152105995377\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mfinal loss: 0.49023152105995377\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mfinal training loss: 0.010609009\n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mStop triggered by Patience(4) stopping criterion. \n", - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mTotal of 32 iterations. \n" - ] - }, - { - "data": { - "image/png": "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updkvzALCgrCwsIqJnaIiIgoKCioso94jd5/Tz75pMPhIKKlS5e6jlOxqfpxpkyZsmnTJiIaN27cI488snjx4rlz57733nvx8fGLFi1q2LDh/fff74pSnudXrFhRVlbmemNgYKBrQaFQVF6ufKcwNLR8drywsLAqn5ubm5ufn79w4ULXy5SUlMjIyJv72XiA3wUhEf0rlROIuv7i/KMPH6UhIuI0+rBR75atW3hxyvOhT76maJAodY0AAFfEx8efOnWqrKxMr9cT0e7du++9914iCgwMLCoqcu1T0RYql8udzisXr9nZ2ZWPc+jQIbvdLpfLXcfp1q1b5Q/6+OOPK7/s2rVr165d7Xb74MGDZ82a9dJLL23atMlisXAc53A4XnjhhVs6i/379ycmJhLRvn37XJePFZKTk/V6/axZs27pgJ7ij0FIRC+kcoJIXX9x/NGXj1QTERFj+m6Z8sgGBV++GdB3mLb9fRKXCABwWZMmTbp16zZs2LCxY8du2rTp77//njdvHhF17dr1448/Tk5OPnPmzLffftukSRMiCg8PDwwMnDRpUkJCwv333+/KTpdOnTo1aNBg9OjRw4cPX758eVFRUb9+/a71oWvXrt27d2/79u1tNtvRo0cfeOCBoKCgkJCQTz/9ND09febMmdfqO3otkyZN0mq1paWlU6dOXbBgQeVNmZmZH3744ejRowcPHmy329evXz9o0CBXavqAnwYhEb2Uxhns1PNXx7refJiqfKWqWYfw52ML5ky0nT4c1O9pJvPfnw8A1CgLFy785JNPpk2bFh0dvW3bNlcL54gRI4xG42effdasWbNvvvnm8OHDRMRx3Nq1axcvXrx9+/YuXbpUDkLG2OrVq6dMmTJ16tTGjRtv2bJFrVYT0T333FP5ItKlUaNGq1atmjx5slarfemll1x37FauXDl16tRNmzY99thjnTt3TklJIaJOnTpVPGLRpEmTwYMHu5b1ev2LL75YccD333//hx9+MJlM8+bN69y5MxGlpaW5rk2VSuXmzZunT58+bdo0hUJx1113RUVFeetHWQ27VrNyDTFhwgStVjt+/HgvHf/17c6s0+LaPnyo8spK0WounP+RYCgOGTZBFhBy559S0aDhh3DuUlchjdp+7llZWV9++SUm5vUgvV6/f//+2+4I6pqY9/Tp056tysVfniO8lnfukvVp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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "iterated_clf.controls[2] = Patience(4)\n", - "fit!(mach, rows=train)\n", - "\n", - "plot(\n", - " epochs,\n", - " losses,\n", - " xlab = \"epoch\",\n", - " ylab = \"cross entropy\",\n", - " label=\"out-of-sample\",\n", - ")\n", - "plot!(epochs, training_losses, label=\"training\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "\n", - "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.10.3", - "language": "julia", - "name": "julia-1.10" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.10.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/src/extended_examples/MNIST/notebook.jl b/docs/src/extended_examples/MNIST/notebook.jl index 810fae5f..4b3a97c3 100644 --- a/docs/src/extended_examples/MNIST/notebook.jl +++ b/docs/src/extended_examples/MNIST/notebook.jl @@ -3,24 +3,21 @@ # This tutorial is available as a Jupyter notebook or julia script # [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/extended_examples/MNIST). -# The following code block assumes the current directory contains `Manifest.toml` and -# `Project.toml` files tested for this demonstration, available -# [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/extended_examples/MNIST). -# Otherwise, you can try running `using Pkg; Pkg.activate(temp=true)` instead, and -# manually add the relevant packages to the temporary environment created. - -using Pkg -const DIR = @__DIR__ -Pkg.activate(DIR) -Pkg.instantiate() +using Pkg #!md +PKG_ENV = joinpath(@__DIR__, "..", "..", "..") #!md +Pkg.activate(PKG_ENV); #!md +Pkg.instantiate(); #!md -# **Julia version** is assumed to be ≥ 1.10** +# **This script tested using Julia 1.10** using MLJ using Flux import MLJFlux import MLUtils import MLJIteration # for `skip` +using StableRNGs + +stable_rng() = StableRNG(123) # If running on a GPU, you will also need to `import CUDA` and `import cuDNN`. @@ -102,12 +99,12 @@ end # We now define the MLJ model. -ImageClassifier = @load ImageClassifier +ImageClassifier = @load ImageClassifier pkg=MLJFlux clf = ImageClassifier( builder=MyConvBuilder(3, 16, 32, 32), batch_size=50, epochs=10, - rng=123, + rng=stable_rng(), ) # You can add Flux options `optimiser=...` and `loss=...` in the above constructor @@ -144,7 +141,7 @@ Flux.params(chain)[2] # Adding 20 more epochs: clf.epochs = clf.epochs + 20 -fit!(mach, rows=train); +fit!(mach, rows=train, verbosity=0); # Computing an out-of-sample estimate of the loss: @@ -161,6 +158,8 @@ evaluate!( verbosity=0, ) +# (We could also have specified `resampling=[(train, test),]` and dropped the `rows` +# specifi ation.) # ## Wrapping the MLJFlux model with iteration controls @@ -194,7 +193,7 @@ evaluate!( # To extract Flux params from an MLJFlux machine -parameters(mach) = vec.(Flux.params(fitted_params(mach))); +parameters(mach) = vec.(Flux.trainables(fitted_params(mach))) # To store the traces: diff --git a/docs/src/extended_examples/MNIST/notebook.md b/docs/src/extended_examples/MNIST/notebook.md index ec7cef3f..da047f71 100644 --- a/docs/src/extended_examples/MNIST/notebook.md +++ b/docs/src/extended_examples/MNIST/notebook.md @@ -7,7 +7,7 @@ EditURL = "notebook.jl" This tutorial is available as a Jupyter notebook or julia script [here](https://github.com/FluxML/MLJFlux.jl/tree/dev/docs/src/extended_examples/MNIST). -**Julia version** is assumed to be 1.10.* +**This script tested using Julia 1.10** ````@example MNIST using MLJ @@ -15,6 +15,9 @@ using Flux import MLJFlux import MLUtils import MLJIteration # for `skip` +using StableRNGs + +stable_rng() = StableRNG(123) ```` If running on a GPU, you will also need to `import CUDA` and `import cuDNN`. @@ -113,12 +116,12 @@ end We now define the MLJ model. ````@example MNIST -ImageClassifier = @load ImageClassifier +ImageClassifier = @load ImageClassifier pkg=MLJFlux clf = ImageClassifier( builder=MyConvBuilder(3, 16, 32, 32), batch_size=50, epochs=10, - rng=123, + rng=stable_rng(), ) ```` @@ -165,7 +168,7 @@ Adding 20 more epochs: ````@example MNIST clf.epochs = clf.epochs + 20 -fit!(mach, rows=train); +fit!(mach, rows=train, verbosity=0); nothing #hide ```` @@ -179,13 +182,18 @@ cross_entropy(predicted_labels, labels[test]) Or to fit and predict, in one line: ````@example MNIST -evaluate!(mach, - resampling=Holdout(fraction_train=0.5), - measure=cross_entropy, - rows=1:1000, - verbosity=0) +evaluate!( + mach, + resampling=Holdout(fraction_train=0.5), + measure=cross_entropy, + rows=1:1000, + verbosity=0, +) ```` +(We could also have specified `resampling=[(train, test),]` and dropped the `rows` +specifi ation.) + ## Wrapping the MLJFlux model with iteration controls Any iterative MLJFlux model can be wrapped in *iteration controls*, @@ -219,8 +227,7 @@ Some helpers To extract Flux params from an MLJFlux machine ````@example MNIST -parameters(mach) = vec.(Flux.params(fitted_params(mach))); -nothing #hide +parameters(mach) = vec.(Flux.trainables(fitted_params(mach))) ```` To store the traces: @@ -325,18 +332,11 @@ savefig(joinpath(tempdir(), "weights.png")) ### Retrieving a snapshot for a prediction: -````julia +````@example MNIST mach2 = machine(joinpath(tempdir(), "mnist3.jls")) predict_mode(mach2, images[501:503]) ```` -```` -3-element CategoricalArrays.CategoricalArray{Int64,1,UInt32}: - 7 - 9 - 5 -```` - ### Restarting training Mutating `iterated_clf.controls` or `clf.epochs` (which is otherwise diff --git a/docs/src/extended_examples/MNIST/notebook.unexecuted.ipynb b/docs/src/extended_examples/MNIST/notebook.unexecuted.ipynb index f2beaabc..a66fe8a2 100644 --- a/docs/src/extended_examples/MNIST/notebook.unexecuted.ipynb +++ b/docs/src/extended_examples/MNIST/notebook.unexecuted.ipynb @@ -20,9 +20,9 @@ "cell_type": "code", "source": [ "using Pkg\n", - "const DIR = @__DIR__\n", - "Pkg.activate(DIR)\n", - "Pkg.instantiate()" + "PKG_ENV = joinpath(@__DIR__, \"..\", \"..\", \"..\")\n", + "Pkg.activate(PKG_ENV);\n", + "Pkg.instantiate();" ], "metadata": {}, "execution_count": null @@ -30,7 +30,7 @@ { "cell_type": "markdown", "source": [ - "**Julia version** is assumed to be 1.10.*" + "**This script tested using Julia 1.10**" ], "metadata": {} }, @@ -42,7 +42,10 @@ "using Flux\n", "import MLJFlux\n", "import MLUtils\n", - "import MLJIteration # for `skip`" + "import MLJIteration # for `skip`\n", + "using StableRNGs\n", + "\n", + "stable_rng() = StableRNG(123)" ], "metadata": {}, "execution_count": null @@ -228,12 +231,12 @@ "outputs": [], "cell_type": "code", "source": [ - "ImageClassifier = @load ImageClassifier\n", + "ImageClassifier = @load ImageClassifier pkg=MLJFlux\n", "clf = ImageClassifier(\n", " builder=MyConvBuilder(3, 16, 32, 32),\n", " batch_size=50,\n", " epochs=10,\n", - " rng=123,\n", + " rng=stable_rng(),\n", ")" ], "metadata": {}, @@ -343,7 +346,7 @@ "cell_type": "code", "source": [ "clf.epochs = clf.epochs + 20\n", - "fit!(mach, rows=train);" + "fit!(mach, rows=train, verbosity=0);" ], "metadata": {}, "execution_count": null @@ -376,15 +379,25 @@ "outputs": [], "cell_type": "code", "source": [ - "evaluate!(mach,\n", - " resampling=Holdout(fraction_train=0.5),\n", - " measure=cross_entropy,\n", - " rows=1:1000,\n", - " verbosity=0)" + "evaluate!(\n", + " mach,\n", + " resampling=Holdout(fraction_train=0.5),\n", + " measure=cross_entropy,\n", + " rows=1:1000,\n", + " verbosity=0,\n", + ")" ], "metadata": {}, "execution_count": null }, + { + "cell_type": "markdown", + "source": [ + "(We could also have specified `resampling=[(train, test),]` and dropped the `rows`\n", + "specifi ation.)" + ], + "metadata": {} + }, { "cell_type": "markdown", "source": [ @@ -461,7 +474,7 @@ "outputs": [], "cell_type": "code", "source": [ - "parameters(mach) = vec.(Flux.params(fitted_params(mach)));" + "parameters(mach) = vec.(Flux.trainables(fitted_params(mach)))" ], "metadata": {}, "execution_count": null @@ -720,11 +733,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.3" + "version": "1.10.10" }, "kernelspec": { "name": "julia-1.10", - "display_name": "Julia 1.10.3", + "display_name": "Julia 1.10.10", "language": "julia" } }, diff --git a/docs/src/generate.jl b/docs/src/generate.jl index a9451d07..5a645212 100644 --- a/docs/src/generate.jl +++ b/docs/src/generate.jl @@ -32,8 +32,7 @@ function generate(dir; execute=true, pluto=false) Literate.notebook(INFILE, OUTDIR, execute=false) mv("$OUTDIR/notebook.ipynb", "$OUTDIR/notebook.unexecuted.ipynb", force=true) Literate.notebook(INFILE, OUTDIR, execute=$execute) - $execute || @warn "Not generating a pre-executed Jupyter notebook for $outdir. "* - "YOU NEED TO EXECUTE \"notebook.ipynb\" MANUALLY!" + $execute || @warn "Not generating a pre-executed Jupyter notebook for $outdir. " end |> eval end diff --git a/docs/src/generate_all.jl b/docs/src/generate_all.jl new file mode 100644 index 00000000..1b48233c --- /dev/null +++ b/docs/src/generate_all.jl @@ -0,0 +1,15 @@ +HERE = @__DIR__ +include(joinpath(HERE, "common_workflows", "composition", "generate.jl")) +include(joinpath(HERE, "common_workflows", "comparison", "generate.jl")) +include(joinpath(HERE, "common_workflows", "architecture_search", "generate.jl")) +include(joinpath(HERE, "common_workflows", "hyperparameter_tuning", "generate.jl")) +include(joinpath(HERE, "common_workflows", "entity_embeddings", "generate.jl")) +include(joinpath(HERE, "common_workflows", "incremental_training", "generate.jl")) +include(joinpath(HERE, "common_workflows", "early_stopping", "generate.jl")) +include(joinpath(HERE, "common_workflows", "live_training", "generate.jl")) +include(joinpath(HERE, "extended_examples", "MNIST", "generate.jl")) + +@info "Ignore warnings above about Pluto notebooks; we don't provide these" +@info "Where *executed* jupyter notebooks are not generated, check the corresponding "* + "README to check we are not providing them. Generally we don't provide them where "* + "Documenter.jl has had trouble generating them in the past. " diff --git a/docs/src/index.md b/docs/src/index.md index b24a0537..98f5dc8b 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -10,13 +10,13 @@ A Julia package integrating deep learning Flux models with [MLJ](https://juliaai - Make it easier to apply machine learning techniques provided by MLJ, including: out-of-sample performance evaluation, hyper-parameter optimization, iteration control, and more, to deep learning models -!!! note "MLJFlux Scope" +!!! note "MLJFlux Scope" MLJFlux support is focused on fundamental deep learning models for common supervised learning tasks. Sophisticated architectures and approaches, such as online learning, reinforcement learning, and adversarial networks, are currently outside its - scope. Also, MLJFlux is limited to tasks where all (batches of) training data - fits into memory. + scope. Also, MLJFlux is limited to tasks where all (batches of) training data + fits into memory. ## Installation @@ -25,39 +25,47 @@ import Pkg Pkg.activate("my_environment", shared=true) Pkg.add(["MLJ", "MLJFlux", "Optimisers", "Flux"]) ``` -You only need `Flux` if you need to build a custom architecture, or experiment with different loss or activation functions. Since MLJFlux 0.5, you must use optimisers from Optimisers.jl, as native Flux.jl optimisers are no longer supported. ## Quick Start -For the following demo, you will need to additionally run `Pkg.add("RDatasets")`. - ```@example -using MLJ, Flux, MLJFlux -import RDatasets -import Optimisers +using MLJ, MLJFlux +import Flux # 1. Load Data -iris = RDatasets.dataset("datasets", "iris"); -y, X = unpack(iris, ==(:Species), colname -> true, rng=123); +iris = load_iris() # a named-tuple of vectors (but most tables work here) +y, X = unpack(iris, ==(:target), rng=123) +X = Flux.fmap(column-> Float32.(column), X) # Flux prefers Float32 data # 2. Load and instantiate model NeuralNetworkClassifier = @load NeuralNetworkClassifier pkg="MLJFlux" clf = NeuralNetworkClassifier( builder=MLJFlux.MLP(; hidden=(5,4), σ=Flux.relu), - optimiser=Optimisers.Adam(0.01), + optimiser=Flux.Adam(0.01), batch_size=8, - epochs=100, - acceleration=CUDALibs() # For GPU support + epochs=100, + acceleration=CPU1() # the default; use instead `CUDALibs()` for GPU ) -# 3. Wrap it in a machine +# 3. Wrap it in a machine mach = machine(clf, X, y) # 4. Evaluate the model -cv=CV(nfolds=5) -evaluate!(mach, resampling=cv, measure=accuracy) +evaluate!(mach, resampling=CV(nfolds=3), repeats=2, measure=[brier_loss, accuracy]) + +# 5. Fit and predict on new data +fit!(mach) +Xnew = ( + sepal_length = [7.2, 4.4, 5.6], + sepal_width = [3.0, 2.9, 2.5], + petal_length = [5.8, 1.4, 3.9], + petal_width = [1.6, 0.2, 1.1], +) +predict(mach, Xnew) ``` -As you can see we are able to use MLJ meta-functionality (i.e., cross validation) with a Flux deep learning model. All arguments provided have defaults. + +As you can see we are able to use MLJ meta-functionality (in this case Monte Carlo +cross-validation) with a Flux neural network. Notice that we are also able to define the neural network in a high-level fashion by only specifying the number of neurons in each hidden layer and the activation diff --git a/src/mlj_embedder_interface.jl b/src/mlj_embedder_interface.jl index 2654a597..163a0309 100644 --- a/src/mlj_embedder_interface.jl +++ b/src/mlj_embedder_interface.jl @@ -185,6 +185,6 @@ learn entity embeddings, not to make predictions, which here are made by `KNNClassifier()`. See also -[`NeuralNetworkClassifier`, `NeuralNetworkRegressor`](@ref) +[`NeuralNetworkClassifier`](@ref), [`NeuralNetworkRegressor`](@ref) """ EntityEmbedder