LayerSemanticsParamType(nntrainer::createLayer<custom::PowLayer>,
custom::PowLayer::type, {}, 0, false, 1);
-GTEST_PARAMETER_TEST(PowLayer, LayerSemantics, ::testing::Values(semantic_pow));
+auto semantic_pow_exponent = LayerSemanticsParamType(
+ nntrainer::createLayer<custom::PowLayer>, custom::PowLayer::type,
+ {"exponent=2.0"}, 0, false, 1);
+
+GTEST_PARAMETER_TEST(PowLayer, LayerSemantics,
+ ::testing::Values(semantic_pow, semantic_pow_exponent));
+
+auto semantic_pow_exp =
+ LayerSemanticsParamType(nntrainer::createLayer<custom::PowLayer>,
+ custom::PowLayer::type, {"exp=2.0"}, 0, false, 1);
+
+auto semantic_pow_exponential = LayerSemanticsParamType(
+ nntrainer::createLayer<custom::PowLayer>, custom::PowLayer::type,
+ {"exponential=2.0"}, 0, false, 1);
+
+GTEST_PARAMETER_TEST(PowLayer, LayerPropertySemantics,
+ ::testing::Values(semantic_pow_exp,
+ semantic_pow_exponential));
GTEST_PARAMETER_TEST(CenteringLayer, LayerSemantics,
::testing::Values(semantic_activation_centering));
+
+auto semantic_activation_centroid_knn_prop_n = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::CentroidKNN>, nntrainer::CentroidKNN::type,
+ {"class_num=1"}, 0, false, 1);
+
+GTEST_PARAMETER_TEST(
+ Input, LayerPropertySemantics,
+ ::testing::Values(semantic_activation_centroid_knn_prop_n));
unsigned int num_inputs;
};
+/**
+ * @brief LayerPropertySemantics
+ * @details Inherit LayerSemantics to solely test negative property cases
+ */
+class LayerPropertySemantics : public LayerSemantics {};
+
typedef enum {
SKIP_CALC_GRAD = 1 << 0, /**< skip calculating gradient and compare */
SKIP_CALC_DERIV = 1 << 1, /**< skip calculating derivative and compare */
expected_type);
}
+TEST_P(LayerPropertySemantics, setPropertiesInvalid_n) {
+ auto lnode = nntrainer::createLayerNode(expected_type);
+ EXPECT_THROW(layer->setProperty({valid_properties}), std::invalid_argument);
+}
+
TEST_P(LayerSemantics, setPropertiesInvalid_n) {
auto lnode = nntrainer::createLayerNode(expected_type);
/** must not crash */
EXPECT_EQ(1, 1); /**< no assert tc from TCM, this is disabled test */
}
-TEST_P(LayerSemantics, DISABLED_setPropertiesValidInvalidOnly_n) {
- EXPECT_EQ(1, 1); /**< no assert tc from TCM, this is disabled test */
+TEST_P(LayerPropertySemantics, setPropertiesValidInvalidOnly_n) {
+ EXPECT_THROW(layer->setProperty(valid_properties), std::invalid_argument);
+}
+
+TEST_P(LayerSemantics, gettersValidate_p) {
+ std::string type;
+
+ EXPECT_NO_THROW(type = layer->getType());
+ EXPECT_GT(type.size(), size_t(0));
+ EXPECT_NO_THROW(layer->supportInPlace());
+ EXPECT_NO_THROW(layer->requireLabel());
+ EXPECT_NO_THROW(layer->supportBackwarding());
}
TEST_P(LayerSemantics, finalizeValidate_p) {
}
}
-TEST_P(LayerSemantics, getTypeValidate_p) {
- std::string type;
-
- EXPECT_NO_THROW(type = layer->getType());
- EXPECT_GT(type.size(), size_t(0));
-}
-
-TEST_P(LayerSemantics, gettersValidate_p) {
- EXPECT_NO_THROW(layer->supportInPlace());
- EXPECT_NO_THROW(layer->requireLabel());
- EXPECT_NO_THROW(layer->supportBackwarding());
-}
-
TEST_P(LayerSemantics, setBatchValidate_p) {
ml::train::TensorDim in_dim({1, 1, 1, 1});
std::vector<ml::train::TensorDim> input_dims(num_inputs, in_dim);
nntrainer::InputLayer::type, {}, 0, false, 1);
GTEST_PARAMETER_TEST(Input, LayerSemantics, ::testing::Values(semantic_input));
+
+auto input_prop_n = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::InputLayer>, nntrainer::InputLayer::type,
+ {"input_shape=0:3:2:1"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+GTEST_PARAMETER_TEST(Input, LayerPropertySemantics,
+ ::testing::Values(input_prop_n));
GTEST_PARAMETER_TEST(Permute, LayerSemantics,
::testing::Values(semantic_permute));
+
+auto permute_prop1 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PermuteLayer>,
+ nntrainer::PermuteLayer::type, {"direction=random_string"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto permute_prop2 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PermuteLayer>,
+ nntrainer::PermuteLayer::type, {"direction=1,2,4"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto permute_prop3 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PermuteLayer>,
+ nntrainer::PermuteLayer::type, {"direction=1,2,3,0"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto permute_prop4 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PermuteLayer>,
+ nntrainer::PermuteLayer::type, {"direction=3:1:2"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto permute_prop5 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PermuteLayer>,
+ nntrainer::PermuteLayer::type, {"direction=3|1|2"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+GTEST_PARAMETER_TEST(Permute, LayerPropertySemantics,
+ ::testing::Values(permute_prop1, permute_prop2,
+ permute_prop3, permute_prop4,
+ permute_prop5));
semantic_pooling2d_avg,
semantic_pooling2d_global_max,
semantic_pooling2d_global_avg));
+
+auto pooling2d_prop = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::Pooling2DLayer>,
+ nntrainer::Pooling2DLayer::type, {"pool_size="},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+GTEST_PARAMETER_TEST(Pooling2DMax, LayerPropertySemantics,
+ ::testing::Values(pooling2d_prop));
GTEST_PARAMETER_TEST(PreprocessFlip, LayerSemantics,
::testing::Values(semantic_flip));
+
+auto flip_prop1 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PreprocessFlipLayer>,
+ nntrainer::PreprocessFlipLayer::type,
+ {"flip_direction=vertical_and_horizontal"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto flip_prop2 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PreprocessFlipLayer>,
+ nntrainer::PreprocessFlipLayer::type, {"flip_direction=flip"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto flip_prop3 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PreprocessFlipLayer>,
+ nntrainer::PreprocessFlipLayer::type, {"flip_direction=horizontal&vertical"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto flip_prop4 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PreprocessFlipLayer>,
+ nntrainer::PreprocessFlipLayer::type, {"flip_direction=horizontal&&vertical"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+auto flip_prop5 = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::PreprocessFlipLayer>,
+ nntrainer::PreprocessFlipLayer::type, {"flip_direction=horizontal+vertical"},
+ LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1);
+
+GTEST_PARAMETER_TEST(PreprocessFlip, LayerPropertySemantics,
+ ::testing::Values(flip_prop1, flip_prop2, flip_prop3,
+ flip_prop4, flip_prop5));