|
|
@ -144,26 +144,23 @@ public:
|
|
|
|
CHECK_EQ(2, outputs.size());
|
|
|
|
CHECK_EQ(2, outputs.size());
|
|
|
|
CHECK_EQ(0, inouts.size());
|
|
|
|
CHECK_EQ(0, inouts.size());
|
|
|
|
|
|
|
|
|
|
|
|
auto input = dynamic_cast<const typename MatrixT<Device>::type&>(inputs[0]);
|
|
|
|
CHECK_EQ(inputs[0].dims_.size(), 4);
|
|
|
|
auto output =
|
|
|
|
for (size_t i = 0; i < inputs[0].dims_.size(); i++) {
|
|
|
|
dynamic_cast<const typename MatrixT<Device>::type&>(outputs[0]);
|
|
|
|
CHECK_EQ(inputs[0].dims_[i], outputs[0].dims_[i]);
|
|
|
|
auto denom =
|
|
|
|
CHECK_EQ(inputs[0].dims_[i], outputs[1].dims_[i]);
|
|
|
|
dynamic_cast<const typename MatrixT<Device>::type&>(outputs[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CHECK(input.isContiguous());
|
|
|
|
size_t samples = inputs[0].dims_[0];
|
|
|
|
CHECK(output.isContiguous());
|
|
|
|
size_t channels = inputs[0].dims_[1];
|
|
|
|
CHECK(denom.isContiguous());
|
|
|
|
size_t height = inputs[0].dims_[2];
|
|
|
|
CHECK_EQ(output.getHeight(), input.getHeight());
|
|
|
|
size_t width = inputs[0].dims_[3];
|
|
|
|
CHECK_EQ(output.getWidth(), input.getWidth());
|
|
|
|
size_t imageSize = channels * height * width;
|
|
|
|
CHECK_EQ(output.getHeight(), denom.getHeight());
|
|
|
|
CpuMatrix input(inputs[0].buf_, samples, imageSize);
|
|
|
|
CHECK_EQ(output.getWidth(), denom.getWidth());
|
|
|
|
CpuMatrix output(outputs[0].buf_, samples, imageSize);
|
|
|
|
|
|
|
|
CpuMatrix denom(outputs[1].buf_, samples, imageSize);
|
|
|
|
// CrossMapNormal<Device> cross;
|
|
|
|
|
|
|
|
// need:
|
|
|
|
CrossMapNormal<Device> cross;
|
|
|
|
// size_t channels,
|
|
|
|
cross(output, denom, input, channels, height, width, size_, scale_, pow_);
|
|
|
|
// size_t imgSizeH,
|
|
|
|
|
|
|
|
// size_t imgSizeW,
|
|
|
|
|
|
|
|
// cross(output, denom, input, );
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|