Skip to content
This repository was archived by the owner on Mar 16, 2022. It is now read-only.

Special Case: Post-processing #10

Merged
merged 1 commit into from
Oct 1, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
1. [Specifications](#specifications)
2. [Out of scope](#out-of-scope)
3. [Proposal](#proposal)
3. [Special cases](#special-cases)
4. [Demos](#demos)
5. [Implementation details](#implementation-details)
6. [Alternatives considered](#alternatives-considered)
Expand Down Expand Up @@ -124,6 +125,9 @@ The proposed solution can optionally support the following nice-to-haves:
2. We focus on the public API and not on implementation details. Though the repo contains private helper methods used to
[construct models](https://github.com/datumbox/dapi-model-versioning/blob/main/dapi_lib/models/resnet.py#L19-L43),
these are not part of the proposal and libraries can adapt them to their needs and current practices.
3. We try to keep this RFC not too opinionated but rather describe a framework that gives to the DAPI libs the space to
adapt the solution on their needs. As a result, fully specifying implementation details is beyond the scope of this
proposal.

### Proposal

Expand Down Expand Up @@ -183,6 +187,16 @@ The above approach:
- Covers all mandatory criteria.
- Supports all the nice-to-haves.

### Special cases

This section provides some guidance on how to handle special cases that were brought up during the review of the RFC.
When multiple valid options exist, the DAPI libs should choose the one that meets their needs best:
- If a model requires both pre-processing and post-processing transforms, there are two main options:
1. We can add both of them in a single transformer class, which will expose 2 public methods one for `preprocessing`
and one for `postprocessing`.
2. We can provide two separate transformer classes which will implement `preprocessing` and `postprocessing` on their
`forward()`/`__call()__` method. Then we will offer two separate fields for them on the `Enum` class.

### Demos

To prove that the proposed API can accommodate all domains, we implemented it to 4 real-world models. To see the demos
Expand Down