}
replaceLayerParam(layerParams, "mode", "interpolation");
}
+ else if (layer_type == "LogSoftmax")
+ {
+ layerParams.type = "Softmax";
+ layerParams.set("log_softmax", true);
+ }
else
{
for (int j = 0; j < node_proto.input_size(); j++) {
if (layer_id.find(node_proto.input(j)) == layer_id.end())
layerParams.blobs.push_back(getBlob(node_proto, constBlobs, j));
}
- }
-
- int id = dstNet.addLayer(layerParams.name, layerParams.type, layerParams);
- layer_id.insert(std::make_pair(layerParams.name, LayerInfo(id, 0)));
-
-
- std::vector<MatShape> layerInpShapes, layerOutShapes, layerInternalShapes;
- for (int j = 0; j < node_proto.input_size(); j++) {
- layerId = layer_id.find(node_proto.input(j));
- if (layerId != layer_id.end()) {
- dstNet.connect(layerId->second.layerId, layerId->second.outputId, id, j);
- // Collect input shapes.
- shapeIt = outShapes.find(node_proto.input(j));
- CV_Assert(shapeIt != outShapes.end());
- layerInpShapes.push_back(shapeIt->second);
- }
- }
-
- // Compute shape of output blob for this layer.
- Ptr<Layer> layer = dstNet.getLayer(id);
- layer->getMemoryShapes(layerInpShapes, 0, layerOutShapes, layerInternalShapes);
- CV_Assert(!layerOutShapes.empty());
- outShapes[layerParams.name] = layerOutShapes[0];
- }
- }
+ }
+
+ int id = dstNet.addLayer(layerParams.name, layerParams.type, layerParams);
+ layer_id.insert(std::make_pair(layerParams.name, LayerInfo(id, 0)));
+
+
+ std::vector<MatShape> layerInpShapes, layerOutShapes, layerInternalShapes;
+ for (int j = 0; j < node_proto.input_size(); j++) {
+ layerId = layer_id.find(node_proto.input(j));
+ if (layerId != layer_id.end()) {
+ dstNet.connect(layerId->second.layerId, layerId->second.outputId, id, j);
+ // Collect input shapes.
+ shapeIt = outShapes.find(node_proto.input(j));
+ CV_Assert(shapeIt != outShapes.end());
+ layerInpShapes.push_back(shapeIt->second);
+ }
+ }
+
+ // Compute shape of output blob for this layer.
+ Ptr<Layer> layer = dstNet.getLayer(id);
+ layer->getMemoryShapes(layerInpShapes, 0, layerOutShapes, layerInternalShapes);
+ CV_Assert(!layerOutShapes.empty());
+ outShapes[layerParams.name] = layerOutShapes[0];
+ }
+}
Net readNetFromONNX(const String& onnxFile)
{