You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.8 KiB
76 lines
2.8 KiB
/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License. */
|
|
|
|
#include <gtest/gtest.h>
|
|
#include "FunctionTest.h"
|
|
|
|
namespace paddle {
|
|
|
|
TEST(MulValue, real) {
|
|
for (size_t numSamples : {5, 32}) {
|
|
for (size_t channels : {5, 5, 32}) {
|
|
for (size_t imgSizeH : {5, 33, 100}) {
|
|
for (size_t imgSizeW : {5, 32, 96}) {
|
|
for (real value : {-0.5, 0.0, 0.5}) {
|
|
for (bool firstHalf : {false, true}) {
|
|
VLOG(3) << " numSamples=" << numSamples
|
|
<< " channels=" << channels << " imgSizeH=" << imgSizeH
|
|
<< " imgSizeW=" << imgSizeW;
|
|
|
|
for (bool test_grad : {false}) {
|
|
CpuGpuFuncCompare compare(
|
|
test_grad ? "MulValueGrad" : "MulValue",
|
|
FuncConfig().set<real>("value", value));
|
|
|
|
TensorShape shape{numSamples, channels, imgSizeH, imgSizeW};
|
|
TensorShape indicesShape{numSamples, 6};
|
|
|
|
compare.addInputs(BufferArg(VALUE_TYPE_FLOAT, shape));
|
|
compare.addInputs(BufferArg(VALUE_TYPE_FLOAT, indicesShape));
|
|
|
|
compare.registerInitCallback([=](BufferArg& arg, size_t index) {
|
|
if (index == 1) {
|
|
real* data = (real*)arg.data();
|
|
|
|
for (size_t i = 0; i < numSamples; ++i) {
|
|
size_t offset = i * 6;
|
|
data[offset] = firstHalf ? 1 : (int)channels / 2;
|
|
data[offset + 1] =
|
|
firstHalf ? (int)channels / 2 : channels;
|
|
data[offset + 2] = firstHalf ? 1 : (int)imgSizeH / 2;
|
|
data[offset + 3] =
|
|
firstHalf ? (int)imgSizeH / 2 : imgSizeH;
|
|
data[offset + 4] = firstHalf ? 1 : (int)imgSizeW / 2;
|
|
data[offset + 5] =
|
|
firstHalf ? (int)imgSizeW / 2 : imgSizeW;
|
|
}
|
|
}
|
|
});
|
|
|
|
compare.addOutputs(BufferArg(VALUE_TYPE_FLOAT,
|
|
shape,
|
|
test_grad ? ADD_TO : ASSIGN_TO),
|
|
test_grad ? ADD_TO : ASSIGN_TO);
|
|
compare.run();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} // namespace paddle
|