stateless.jl

Flux/layers/stateless.jl is a source file in module Flux

			
			
			
			
			
			"""
			

			    flatten(x::AbstractArray)

			

			Reshape arbitrarly-shaped input into a matrix-shaped output,

			preserving the size of the last dimension.

			

			See also [`unsqueeze`](@ref).

			

			# Examples

			```jldoctest

			julia> rand(3,4,5) |> Flux.flatten |> size

			(12, 5)

			

			julia> xs = rand(Float32, 10,10,3,7);

			

			julia> m = Chain(Conv((3,3), 3 => 4, pad=1), Flux.flatten, Dense(400 => 33));

			

			julia> xs |> m[1] |> size

			(10, 10, 4, 7)

			

			julia> xs |> m |> size

			(33, 7)

			```

			"""
			

			
			function
			 
			

	
			flatten
			(
			
			x
			::
			AbstractArray
			)
			
			
  
			
			return
			 
			
			reshape
			(
			x
			,
			 
			:
			,
			 
			
			
			size
			(
			x
			)
			[
			end
			]
			)
			

			end
			

			

			
			
			
			"""
			

			    normalise(x; dims=ndims(x), ϵ=1e-5)

			

			Normalise `x` to mean 0 and standard deviation 1 across the dimension(s) given by `dims`.

			Per default, `dims` is the last dimension. 

			`ϵ` is a small additive factor added to the denominator for numerical stability.

			

			# Examples

			```jldoctest

			julia> using Statistics

			

			julia> x = [9, 10, 20, 60];

			

			julia> y = Flux.normalise(x);

			

			julia> isapprox(std(y), 1, atol=0.2) && std(y) != std(x)

			true

			

			julia> x = rand(1:100, 10, 2);

			

			julia> y = Flux.normalise(x, dims=1);

			

			julia> isapprox(std(y, dims=1), ones(1, 2), atol=0.2) && std(y, dims=1) != std(x, dims=1)

			true

			```

			"""
			

			
			@
			inline
			 
			
			function
			 
			

	
			normalise
			(
			
			x
			::
			AbstractArray
			
			;
			 
			
			dims
			=
			
			ndims
			(
			x
			)
			,
			 
			
			ϵ
			=
			

	
			ofeltype
			(
			x
			,
			 
			1e-5
			)
			)
			
			
  
			
			μ
			 
			=
			 
			
			mean
			(
			x
			,
			 
			
			dims
			=
			dims
			)
			
  
			
			σ
			 
			=
			 
			
			std
			(
			x
			,
			 
			
			dims
			=
			dims
			,
			 
			
			mean
			=
			μ
			,
			 
			
			corrected
			=
			false
			)
			
  
			
			return
			 
			
			@
			.
			
			 
			(
			
			x
			 
			-
			 
			μ
			)
			 
			/
			 
			(
			
			σ
			 
			+
			 
			ϵ
			)
			

			end