// If max operation, we will initialize the vector index part.
if (this->layer_param_.eltwise_param().operation() ==
EltwiseParameter_EltwiseOp_MAX && top->size() == 1) {
- max_idx_.reset(new Blob<int>(bottom[0]->num(), channels,
- height, width));
+ max_idx_.Reshape(bottom[0]->num(), channels, height, width);
}
}
break;
case EltwiseParameter_EltwiseOp_MAX:
// Initialize
- mask = max_idx_->mutable_cpu_data();
+ mask = max_idx_.mutable_cpu_data();
caffe_set(count, -1, mask);
caffe_set(count, Dtype(-FLT_MAX), top_data);
// bottom 0 & 1
}
break;
case EltwiseParameter_EltwiseOp_MAX:
- mask = max_idx_->cpu_data();
+ mask = max_idx_.cpu_data();
for (int index = 0; index < count; ++index) {
Dtype gradient = 0;
if (mask[index] == i) {
}
break;
case EltwiseParameter_EltwiseOp_MAX:
- mask = max_idx_->mutable_gpu_data();
+ mask = max_idx_.mutable_gpu_data();
// NOLINT_NEXT_LINE(whitespace/operators)
MaxForward<Dtype> <<<CAFFE_GET_BLOCKS(count), CAFFE_CUDA_NUM_THREADS>>>(
count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), 0, top_data, mask);
}
break;
case EltwiseParameter_EltwiseOp_MAX:
- mask = max_idx_->gpu_data();
+ mask = max_idx_.gpu_data();
MaxBackward<Dtype> // NOLINT_NEXT_LINE(whitespace/operators)
<<<CAFFE_GET_BLOCKS(count), CAFFE_CUDA_NUM_THREADS>>>(
count, top_diff, i, mask, bottom_diff);