После некоторого просмотра график должен быть обновлен. Поскольку у меня еще не было контрольных точек обучения, я успешно обновил график, экспортировав из ранее замороженного графика в качестве контрольной точки. python3 export_inference_graph.py --input_type image_tensor --pipeline_config_path FROZENGRAPHDIRECTORY/pipeline.config --trained_checkpoint_prefix FROZENGRAPHDIRECTORY/model.ckpt --output_directory FROZENGRAPHDIRECTORY_tfNEWTFVERSION
Ситуация a:
if( condition )
{
}
else
{
}
Когда условие в вышеупомянутом операторе еще будет ложью, затем операторы в, блок будет всегда выполняться.
Ситуация b:
if( condition )
{
}
else if( condition2 )
{
}
else
{
}
Когда 'условие' еще является ложью, затем операторы в, если блок будет только выполняться, когда condition2 будет верен. Операторы в еще блок будет выполняться, когда condition2 будет ложью.
Без "elseif" синтаксиса необходимо было бы записать цепочечные операторы "if" для обработки одного из нескольких возможных результатов этот путь:
if( str == "string1" ) {
//handle first case
} else {
if( str == "string2" ) {
//handle second case
} else {
if( str == "string3" ) {
//handle third case
} else {
//default case
}
}
}
вместо этого можно записать
if( str == "string1" ) {
//handle first case
} else if( str == "string2" ) {
//handle second case
} else if( str == "string3" ) {
//handle third case
} else {
//default case
}
который является полностью тем же как предыдущим, но выглядит намного более хорошим и намного легче читать.
Много языков имеют grammer как это (здесь: Спецификация языка ECMAScript, таким образом, JavaScript):
IfStatement:
if (
Выражение)
Операторelse
Оператор
if (
Выражение)
ОператорОператор:
Блок
VariableStatement
EmptyStatement
ExpressionStatement
IfStatement
IterationStatement
ContinueStatement
BreakStatement
ReturnStatement
WithStatement
LabelledStatement
SwitchStatement
ThrowStatement
TryStatementБлок:
{
StatementListopt}
StatementList:
Оператор
Оператор StatementList
Таким образом, ответвления оператора "if" могут содержать блок операторов (Блок) или один из других операторов (кроме Блока). Это означает, что это допустимо:
if (expr)
someStatement;
else
otherStatement;
И поскольку StatementList может просто содержать отдельного оператора, эти примеры эквивалентны предыдущему:
if (expr) {
someStatement;
} else {
otherStatement;
}
if (expr)
someStatement;
else {
otherStatement;
}
if (expr) {
someStatement;
} else
otherStatement;
И когда мы заменяем otherStatement
дополнительным IfStatement мы получаем это:
if (expr) {
someStatement;
} else
if (expr) {
someOtherStatement;
}
Остальное - просто форматирование кода:
if (expr) {
someStatement;
} else if (expr) {
someOtherStatement;
}
else if
в основном средства else
часть if
другой if
оператор.
Учитывая единственную переменную, Вы будете использовать простое if-else
структура. Когда существует несколько переменных, и у Вас есть другой путь для выполнения для различных возможностей, Вы будете использовать if-else if-...-else
. Обратите внимание на то, что последний также заканчивает else
оператор.
Подчеркивание, что сказал Gumbo.
Кроме того, если язык имеет реальный elif / elsif / elseif (еще скажите, "реальное" - если инструкция, вместо своего рода вложенного объединения в цепочку, скрытого путем форматирования), то компилятор может easly испускать единственный узел в Абстрактном синтаксическом дереве (или подобный, видеть http://en.wikipedia.org/wiki/Abstract_syntax_tree) вместо вложения их.
Дать пример:
Скажите в C/C++, который Вы имеете:
if (a) {
X
} else if (b) {
Y
} else if (c) {
Z
} else {
0
}
Затем компилятор создаст узел AST как это:
a
/ \
X b
/ \
Y c
/ \
Z 0
Но если предпочтительный язык имеет реальное если еще:
if (a) {
X
} elif (b) {
Y
} elif (c) {
Z
} else {
0
}
Затем AST мог более легко быть похожим на это:
(a--b--c)
/ / / \
X Y Z 0
На таком языке, "если еще" только было бы возможно, если фигурные скобки не обязательны:
if (a) {
X
} elif (b) {
Y
} else if (c) { // syntax error "missing braces" if braces mandatory
Z
} else {
0
}
Соответствующий AST (если фигурные скобки не обязательны):
(a--b)
/ / \
X Y c
/ \
Z 0
Это могло сделать CFG-анализ (http://en.wikipedia.org/wiki/Control_flow_graph) легче реализовать (хотя не могло бы быть никакого фактического преимущества оптимизации; так, по моему скромному мнению, это просто принесло бы пользу ленивому программисту :D).
Вы уже дали ответ сами. если/еще для истинного/ложного результата, как int=2 или любое другое возможное международное значение, и if/elseif больше чем для 2 результатов, как int=2 и int=3 и так далее.
Также это группирует контекст переменной. Вы могли проверить каждый результат как
if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };
С if/else/elseif это лучше читаемый.