Skip to content

Commit 1b8e151

Browse files
author
Peng Li
committed
Support user specified label input in tests
1 parent 37f7595 commit 1b8e151

File tree

2 files changed

+50
-5
lines changed

2 files changed

+50
-5
lines changed

paddle/gserver/tests/LayerGradUtil.cpp

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -303,13 +303,31 @@ void initDataLayer(TestConfig testConf,
303303
ICpuGpuVectorPtr sequenceStartPositions;
304304
ICpuGpuVectorPtr subSequenceStartPositions;
305305
IVectorPtr cpuSequenceDims;
306-
for (size_t i = 0; i < testConf.inputDefs.size(); i++) {
306+
for (size_t i = 0; i < testConf.inputDefs.size(); ++i) {
307+
if (testConf.inputDefs[i].inputType != INPUT_SEQUENCE_LABEL) continue;
308+
309+
const std::vector<int>& labelSeqStartPositions =
310+
testConf.inputDefs[i].labelSeqStartPositions;
311+
if (labelSeqStartPositions.size() != 0) {
312+
CHECK(!sequenceStartPositions);
313+
CHECK_GE(labelSeqStartPositions.size(), 2);
314+
315+
sequenceStartPositions =
316+
ICpuGpuVector::create(labelSeqStartPositions.size(), useGpu);
317+
sequenceStartPositions->copyFrom(
318+
labelSeqStartPositions.data(), labelSeqStartPositions.size(), useGpu);
319+
}
320+
}
321+
322+
for (size_t i = 0; i < testConf.inputDefs.size(); ++i) {
307323
LayerConfig config;
308324
config.set_name(testConf.inputDefs[i].name);
309325
config.set_type("data");
310326
config.set_size(testConf.inputDefs[i].dim);
311327
LayerPtr layer = LayerPtr(new DataLayer(config));
312-
size_t numSequence = batchSize / 10 + 1;
328+
size_t numSequence = sequenceStartPositions
329+
? sequenceStartPositions->getSize() - 1
330+
: batchSize / 10 + 1;
313331

314332
Argument data;
315333
auto fillData = [&](bool trans, int height, int width) {
@@ -336,9 +354,17 @@ void initDataLayer(TestConfig testConf,
336354
break;
337355
case INPUT_LABEL:
338356
case INPUT_SEQUENCE_LABEL:
339-
data.ids = VectorT<int>::create(batchSize, useGpu);
340-
// now rand number can be 0 to inputDefs[i].dim
341-
data.ids->rand(testConf.inputDefs[i].dim);
357+
if (testConf.inputDefs[i].labelInitValue.size() != 0) {
358+
const std::vector<int>& labelInitValue =
359+
testConf.inputDefs[i].labelInitValue;
360+
CHECK_EQ(labelInitValue.size(), batchSize);
361+
data.ids = VectorT<int>::create(batchSize, useGpu);
362+
data.ids->copyFrom(labelInitValue.data(), batchSize);
363+
} else {
364+
data.ids = VectorT<int>::create(batchSize, useGpu);
365+
// now rand number can be 0 to inputDefs[i].dim
366+
data.ids->rand(testConf.inputDefs[i].dim);
367+
}
342368
break;
343369
case INPUT_SPARSE_NON_VALUE_DATA:
344370
data.value = makeRandomSparseMatrix(

paddle/gserver/tests/LayerGradUtil.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ struct InputDef {
6464
size_t paraSize;
6565
ParaSparse sparse;
6666
bool isStatic;
67+
std::vector<int> labelInitValue;
68+
std::vector<int> labelSeqStartPositions;
6769
InputDef(InputType type, string nameIn, size_t dimIn, size_t sizeIn) {
6870
inputType = type;
6971
name = nameIn;
@@ -72,6 +74,23 @@ struct InputDef {
7274
sparse = {""};
7375
isStatic = false;
7476
}
77+
78+
InputDef(InputType type,
79+
string nameIn,
80+
size_t dimIn,
81+
size_t sizeIn,
82+
std::vector<int> labelInitValue,
83+
std::vector<int> labelSeqStartPositions)
84+
: labelInitValue(labelInitValue),
85+
labelSeqStartPositions(labelSeqStartPositions) {
86+
inputType = type;
87+
name = nameIn;
88+
dim = dimIn;
89+
paraSize = sizeIn;
90+
sparse = {""};
91+
isStatic = false;
92+
}
93+
7594
InputDef(InputType type,
7695
string nameIn,
7796
size_t dimIn,

0 commit comments

Comments
 (0)