| 158 | } |
| 159 | |
| 160 | bool Program::IsValid() const { |
| 161 | for (int i = 0; i < residual_blocks_.size(); ++i) { |
| 162 | const ResidualBlock* residual_block = residual_blocks_[i]; |
| 163 | if (residual_block->index() != i) { |
| 164 | LOG(WARNING) << "Residual block: " << i |
| 165 | << " has incorrect index: " << residual_block->index(); |
| 166 | return false; |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | int state_offset = 0; |
| 171 | int delta_offset = 0; |
| 172 | for (int i = 0; i < parameter_blocks_.size(); ++i) { |
| 173 | const ParameterBlock* parameter_block = parameter_blocks_[i]; |
| 174 | if (parameter_block->index() != i || |
| 175 | parameter_block->state_offset() != state_offset || |
| 176 | parameter_block->delta_offset() != delta_offset) { |
| 177 | LOG(WARNING) << "Parameter block: " << i |
| 178 | << "has incorrect indexing information: " |
| 179 | << parameter_block->ToString(); |
| 180 | return false; |
| 181 | } |
| 182 | |
| 183 | state_offset += parameter_blocks_[i]->Size(); |
| 184 | delta_offset += parameter_blocks_[i]->TangentSize(); |
| 185 | } |
| 186 | |
| 187 | return true; |
| 188 | } |
| 189 | |
| 190 | bool Program::ParameterBlocksAreFinite(std::string* message) const { |
| 191 | CHECK(message != nullptr); |
nothing calls this directly
no test coverage detected