Ответ довольно прост. Основные алгоритмы обучения являются жадными по своей природе - они не находят глобального оптимального, а скорее - «ближайшего» локального решения. В результате, начиная с любой фиксированной инициализации, вы отклоняете свое решение по отношению к определенному набору весов. Если вы делаете это случайным образом (и, возможно, много раз), гораздо менее вероятно, что вы застрянете в какой-то странной части поверхности ошибки.
Тот же аргумент применяется к другим алгоритмам, которые не способны найти глобальный оптимум (k-mean, EM и т. д.) и не относится к глобальным методам оптимизации (например, SMO-алгоритму для SVM).
Это вполне ожидаемо. Переменные имеют область . Если вы определяете их внутри блока управления (например, оператор if
), то они не будут доступны снаружи. Итак, что вам нужно сделать, это инициализировать его снаружи так:
$text-color: null;
$background-color: null;
@if $colorscheme == white {
$text-color: #333;
$background-color: #fff;
}
@else {
$text-color: #ccc;
$background-color: #333;
}
Или ...
$text-color: #ccc;
$background-color: #333;
@if $colorscheme == white {
$text-color: #333;
$background-color: #fff;
}
Хотя было бы менее подробным использовать if()
выполните следующие действия:
$text-color: if($colorscheme == white, #333, #ccc);
$background-color: if($colorscheme == white, #fff, #333);
Хотя этот пример еще является more verbose, он устраняет необходимость устанавливать две пустые переменные:
@if $colorscheme == white {
$text-color: #333 !global;
$background-color: #fff !global;
} @else {
$text-color: #ccc !global;
$background-color: #333 !global;
}
. Второй и третий примеры cimmanon намного лучше.