Revert some changes back (related to Gaussian and uniform initializer). Will create separate branch for that.
This commit is contained in:
Родитель
6804156bc2
Коммит
8625d9e019
1
CNTK.sln
1
CNTK.sln
|
@ -551,7 +551,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{83BFF5BF
|
||||||
Tools\generate_build_info = Tools\generate_build_info
|
Tools\generate_build_info = Tools\generate_build_info
|
||||||
Tools\msvc_collect_coverage.py = Tools\msvc_collect_coverage.py
|
Tools\msvc_collect_coverage.py = Tools\msvc_collect_coverage.py
|
||||||
Tools\run_boost_unit_tests.py = Tools\run_boost_unit_tests.py
|
Tools\run_boost_unit_tests.py = Tools\run_boost_unit_tests.py
|
||||||
Scripts\uci2ctf.py = Scripts\uci2ctf.py
|
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensibility", "Extensibility", "{60F87E25-BC87-4782-8E20-1621AAEBB113}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensibility", "Extensibility", "{60F87E25-BC87-4782-8E20-1621AAEBB113}"
|
||||||
|
|
|
@ -1704,7 +1704,7 @@ fromFile - No initialization is required, should only be used if the network
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
uniform - Initializes the parameter matrix with uniform random numbers in
|
uniform - Initializes the parameter matrix with uniform random numbers in
|
||||||
the range of
|
the range of
|
||||||
\begin_inset Formula $\left[-1.0\times initValueScale,1.0\times initValueScale\right]$
|
\begin_inset Formula $\left[-0.05\times initValueScale,0.05\times initValueScale\right]$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
@ -1713,7 +1713,7 @@ uniform - Initializes the parameter matrix with uniform random numbers in
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
gaussian - Initializes the parameter matrix with Gaussian random numbers
|
gaussian - Initializes the parameter matrix with Gaussian random numbers
|
||||||
with zero mean and standard deviation of
|
with zero mean and standard deviation of
|
||||||
\begin_inset Formula $1.0\times initValueScale$
|
\begin_inset Formula $0.2\times initValueScale/\sqrt{cols}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -624,7 +624,7 @@ initValueScale
|
||||||
.
|
.
|
||||||
If the model parameters are initialized using the Gaussian distribution,
|
If the model parameters are initialized using the Gaussian distribution,
|
||||||
the standard deviation will be adjusted to
|
the standard deviation will be adjusted to
|
||||||
\begin_inset Formula $1.0\times initValueScale$
|
\begin_inset Formula $0.2\times initValueScale/\sqrt{fanout}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
|
|
|
@ -204,8 +204,8 @@ void LearnableParameter<ElemType>::PostInitParameters(const wstring& initString,
|
||||||
}
|
}
|
||||||
|
|
||||||
// understood options:
|
// understood options:
|
||||||
// uniform: 1.0
|
// uniform: 1/20
|
||||||
// gaussian: 1.0
|
// gaussian: sqrt(0.04 / fanin)
|
||||||
// xavier: sqrt(3 / fanin)
|
// xavier: sqrt(3 / fanin)
|
||||||
// glorotNormal: sqrt(2 / (fanin+fanout))
|
// glorotNormal: sqrt(2 / (fanin+fanout))
|
||||||
// glorotUniform: sqrt(6 / (fanin+fanout))
|
// glorotUniform: sqrt(6 / (fanin+fanout))
|
||||||
|
@ -214,8 +214,8 @@ void LearnableParameter<ElemType>::PostInitParameters(const wstring& initString,
|
||||||
// returns (*,0) for unrecognized string
|
// returns (*,0) for unrecognized string
|
||||||
static pair<bool/*uniform*/,double/*stddev or range*/> ParseRandomizationType(const wstring& type, size_t fanOut /* = 1*/, size_t fanIn /*= 1*/)
|
static pair<bool/*uniform*/,double/*stddev or range*/> ParseRandomizationType(const wstring& type, size_t fanOut /* = 1*/, size_t fanIn /*= 1*/)
|
||||||
{
|
{
|
||||||
if (type == UniformInitializerTypeName) return make_pair(true, 1.0f);
|
if (type == UniformInitializerTypeName) return make_pair( true, 0.05f);
|
||||||
else if (type == GaussianInitializerTypeName) return make_pair(false, 1.0f);
|
else if (type == GaussianInitializerTypeName) return make_pair(false, 0.2 / sqrt(fanIn));
|
||||||
else if (type == XavierInitializerTypeName) return make_pair(true, sqrt(3.0 / fanIn));
|
else if (type == XavierInitializerTypeName) return make_pair(true, sqrt(3.0 / fanIn));
|
||||||
else if (type == GlorotUniformInitializerTypeName) return make_pair(true, sqrt(6.0 / (fanIn + fanOut)));
|
else if (type == GlorotUniformInitializerTypeName) return make_pair(true, sqrt(6.0 / (fanIn + fanOut)));
|
||||||
else if (type == GlorotNormalInitializerTypeName) return make_pair(false, sqrt(2.0 / (fanIn + fanOut)));
|
else if (type == GlorotNormalInitializerTypeName) return make_pair(false, sqrt(2.0 / (fanIn + fanOut)));
|
||||||
|
|
|
@ -19,7 +19,7 @@ def uniform(scale=DefaultParamInitScale, seed=None):
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
initializer for :class:`cntk.variables.Parameter`
|
initializer for :class:`cntk.variables.Parameter`
|
||||||
initialized to uniform distribution between `scale*[-1, 1]`
|
initialized to uniform distribution between `scale*[-0.05, 0.05]`
|
||||||
'''
|
'''
|
||||||
if seed is None:
|
if seed is None:
|
||||||
seed = SentinelValueForAutoSelectRandomSeed
|
seed = SentinelValueForAutoSelectRandomSeed
|
||||||
|
@ -38,7 +38,7 @@ def gaussian(output_rank=SentinelValueForInferParamInitRank, filter_rank=Sentine
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
initializer for :class:`cntk.variables.Parameter`
|
initializer for :class:`cntk.variables.Parameter`
|
||||||
initialized to Gaussian distribution with mean `0` and standard deviation `scale`.
|
initialized to Gaussian distribution with mean `0` and standard deviation `scale*0.2/sqrt(fanIn))`.
|
||||||
'''
|
'''
|
||||||
if seed is None:
|
if seed is None:
|
||||||
seed = SentinelValueForAutoSelectRandomSeed
|
seed = SentinelValueForAutoSelectRandomSeed
|
||||||
|
|
Загрузка…
Ссылка в новой задаче