| 670 | }; |
| 671 | |
| 672 | class EltwiseLayer final : public ILayer |
| 673 | { |
| 674 | public: |
| 675 | /** Construct an element-wise operation layer |
| 676 | * |
| 677 | * @param[in] sub_stream0 First graph sub-stream |
| 678 | * @param[in] sub_stream1 First graph sub-stream |
| 679 | * @param[in] op Element-wise operation to perform |
| 680 | */ |
| 681 | EltwiseLayer(SubStream &&sub_stream0, SubStream &&sub_stream1, EltwiseOperation op) |
| 682 | : _ss0(std::move(sub_stream0)), _ss1(std::move(sub_stream1)), _op(op) |
| 683 | { |
| 684 | } |
| 685 | |
| 686 | NodeID create_layer(IStream &s) override |
| 687 | { |
| 688 | NodeParams common_params = {name(), s.hints().target_hint}; |
| 689 | NodeIdxPair input0 = {_ss0.tail_node(), 0}; |
| 690 | NodeIdxPair input1 = {_ss1.tail_node(), 0}; |
| 691 | |
| 692 | return GraphBuilder::add_elementwise_node(s.graph(), common_params, input0, input1, _op); |
| 693 | } |
| 694 | |
| 695 | private: |
| 696 | SubStream _ss0; |
| 697 | SubStream _ss1; |
| 698 | EltwiseOperation _op; |
| 699 | }; |
| 700 | /** Flatten Layer */ |
| 701 | class FlattenLayer final : public ILayer |
| 702 | { |
no outgoing calls
no test coverage detected