ivy-llc / ivy

Convert Machine Learning Code Between Frameworks
https://ivy.dev
Other
14.02k stars 5.74k forks source link

Extend Ivy Functional API #3856

Open johanjino opened 2 years ago

johanjino commented 2 years ago

Extend Ivy functional API ivy//ivy/functional/experimental. Each function will need implementation in each backend API and also the Ivy API. The tests will also need to be implemented. See the Deep Dive for more general information on how the functions should be implemented. Particular attention should be placed on the Superset Behaviour section when considering how best to design the function, and what features and arguments it should have. More information about this specific task is provided in the Open Tasks section of the contributor guide. All the implementations have to be placed in experimental directories for both, functional API, backend APIs, Array, and Container instances.

_

Please keep in mind that the proper way to link an issue to this list is to comment "- [ ] #issue_number" while the issue's title only includes the name of the function you've chosen. _

Linear algebra functions: ivy/functional/ivy/experimental/linear_algebra.py

Sorting functions: ivy/functional/ivy/experimental/sorting.py

Set functions: ivy/functional/ivy/experimental/set.py

Manipulation functions: ivy/functional/ivy/experimental/manipulation.py

Random functions: ivy/functional/ivy/experimental/random.py

Statistical functions: ivy/functional/ivy/experimental/statistical.py

Layers functions: ivy/functional/ivy/experimental/layers.py

Elementwise functions: ivy/functional/ivy/experimental/elementwise.py

Sparse Array methods: ivy/functional/ivy/experimental/sparse_array.py

Activation functions: ivy/functional/ivy/experimental/activations.py

Creation functions: ivy/functional/ivy/experimental/creation.py

Norms functions: ivy/functional/ivy/experimental/norms.py

Losses functions: ivy/functional/ivy/experimental/losses.py

Data type functions: ivy/functional/ivy/experimental/data_type.py

The main file paths where these functions are likely to be added are:

ivy/array/experimental/linear\_algebra.py ivy/container/experimental/linear\_algebra.py ivy/functional/backends/jax/experimental/linear\_algebra.py ivy/functional/backends/numpy/experimental/linear\_algebra.py ivy/functional/backends/tensorflow/experimental/linear\_algebra.py ivy/functional/backends/torch/experimental/linear\_algebra.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_core/test\_linalg.py ivy/functional/ivy/experimental/linear\_algebra.py ivy/array/extensions/manipulation.py ivy/container/extensions/manipulation.py ivy/functional/backends/jax/extensions/manipulation.py ivy/functional/backends/numpy/extensions/manipulation.py ivy/functional/backends/tensorflow/extensions/manipulation.py ivy/functional/backends/torch/extensions/manipulation.py ivy/functional/extensions/manipulation.py ivy\_tests/test\_ivy/test\_functional/test\_extensions/test\_core/test\_manipulation.py ivy/functional/backends/jax/experimental/manipulation.py ivy/functional/backends/numpy/experimental/manipulation.py ivy/functional/backends/tensorflow/experimental/manipulation.py ivy/functional/backends/torch/experimental/manipulation.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_core/test\_manipulation.py ivy/array/extensions.py ivy/container/extensions.py ivy/functional/backends/jax/extensions.py ivy/functional/backends/numpy/extensions.py ivy/functional/backends/tensorflow/extensions.py ivy/functional/backends/torch/extensions.py ivy/functional/ivy/extensions.py ivy\_tests/test\_ivy/test\_functional/test\_extensions.py ivy/array/experimental/manipulation.py ivy/container/experimental/manipulation.py ivy/functional/experimental/manipulation.py ivy/functional/backends/jax/experimental/creation.py ivy/functional/backends/numpy/experimental/creation.py ivy/functional/backends/tensorflow/experimental/creation.py ivy/functional/backends/torch/experimental/creation.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_core/test\_creation.py ivy/data\_classes/array/experimental/statistical.py ivy/data\_classes/container/experimental/statistical.py ivy/functional/backends/jax/experimental/statistical.py ivy/functional/backends/numpy/experimental/statistical.py ivy/functional/backends/tensorflow/experimental/statistical.py ivy/functional/backends/torch/experimental/statistical.py ivy/functional/ivy/experimental/statistical.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_core/test\_statistical.py ivy/array/experimental/statistical.py ivy/container/experimental/statistical.py ivy/functional/experimental/statistical.py ivy/data\_classes/array/statistical.py ivy/data\_classes/container/statistical.py ivy/functional/backends/jax/statistical.py ivy/functional/backends/numpy/statistical.py ivy/functional/backends/paddle/statistical.py ivy/functional/backends/tensorflow/statistical.py ivy/functional/backends/torch/statistical.py ivy/functional/ivy/statistical.py ivy\_tests/test\_ivy/test\_functional/test\_core/test\_statistical.py ivy/data\_classes/array/experimental/elementwise.py ivy/data\_classes/container/experimental/elementwise.py ivy/functional/backends/jax/experimental/elementwise.py ivy/functional/backends/mxnet/experimental/elementwise.py ivy/functional/backends/numpy/experimental/elementwise.py ivy/functional/backends/paddle/experimental/elementwise.py ivy/functional/backends/tensorflow/experimental/elementwise.py ivy/functional/backends/torch/experimental/elementwise.py ivy/functional/ivy/experimental/elementwise.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_core/test\_elementwise.py ivy/array/experimental/layers.py ivy/container/experimental/layers.py ivy/functional/backends/jax/experimental/layers.py ivy/functional/backends/numpy/experimental/layers.py ivy/functional/backends/tensorflow/experimental/layers.py ivy/functional/backends/torch/experimental/layers.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_nn/test\_layers.py ivy/data\_classes/array/experimental/layers.py ivy/functional/ivy/experimental/layers.py ivy/data\_classes/container/experimental/layers.py ivy/container/extensions/layers.py ivy/functional/extensions/layers.py ivy\_tests/test\_ivy/test\_functional/test\_extensions/test\_nn/test\_layers.py ivy/functional/backends/paddle/experimental/layers.py ivy/array/elementwise.py ivy/container/elementwise.py ivy/functional/backends/jax/elementwise.py ivy/functional/backends/numpy/elementwise.py ivy/functional/backends/tensorflow/elementwise.py ivy/functional/backends/torch/elementwise.py ivy/functional/ivy/elementwise.py ivy\_tests/test\_ivy/test\_functional/test\_core/test\_elementwise.py ivy\_tests/test\_ivy/helpers/hypothesis\_helpers/array\_helpers.py ivy/array/extensions/elementwise.py ivy/container/extensions/elementwise.py ivy/functional/backends/jax/extensions/elementwise.py ivy/functional/backends/numpy/extensions/elementwise.py ivy/functional/backends/tensorflow/extensions/elementwise.py ivy/functional/backends/torch/extensions/elementwise.py ivy/functional/extensions/elementwise.py ivy\_tests/test\_ivy/test\_functional/test\_extensions/test\_core/test\_elementwise.py ivy/array/experimental/elementwise.py ivy/container/experimental/elementwise.py ivy/functional/experimental/elementwise.py ivy/functional/backends/jax/experimental/activations.py ivy/functional/backends/numpy/experimental/activations.py ivy/functional/backends/tensorflow/experimental/activations.py ivy/functional/backends/torch/experimental/activations.py ivy/functional/ivy/experimental/activations.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_nn/test\_activations.py ivy/data\_classes/container/experimental/creation.py ivy/functional/backends/paddle/experimental/creation.py ivy/functional/ivy/experimental/creation.py ivy/data\_classes/array/experimental/creation.py ivy/data\_classes/array/experimental/norms.py ivy/data\_classes/container/experimental/norms.py ivy/functional/backends/jax/experimental/norms.py ivy/functional/backends/numpy/experimental/norms.py ivy/functional/backends/tensorflow/experimental/norms.py ivy/functional/backends/torch/experimental/norms.py ivy/functional/ivy/experimental/norms.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_nn/test\_norms.py ivy/data\_classes/array/experimental/losses.py ivy/data\_classes/container/experimental/losses.py ivy/functional/backends/paddle/experimental/losses.py ivy/functional/backends/torch/experimental/losses.py ivy/functional/ivy/experimental/losses.py ivy\_tests/test\_ivy/test\_functional/test\_experimental/test\_nn/test\_losses.py ivy/functional/backends/jax/experimental/losses.py ivy/functional/backends/numpy/experimental/losses.py ivy/functional/backends/tensorflow/experimental/losses.py

Viditagarwal7479 commented 2 years ago

max() function is also missing could this be added in active tasks? Then I shall create a PR corresponding to it. As this is also needed for PyTorch frontend open task https://github.com/unifyai/ivy/issues/3612

fnhirwa commented 2 years ago

max() function is also missing could this be added in active tasks? Then I shall create a PR corresponding to it. As this is also needed for PyTorch frontend open task #3612

Hello @Viditagarwal7479 Thanks for the suggestion but we have this function on Ivy API ivy.max()🙂

Viditagarwal7479 commented 2 years ago

max() function is also missing could this be added in active tasks? Then I shall create a PR corresponding to it. As this is also needed for PyTorch frontend open task #3612

Hello @Viditagarwal7479 Thanks for the suggestion but we have this function on Ivy API ivy.max()slightly_smiling_face

Hey @hirwa-nshuti Ohhh! I see my bad. Later noticed and fixed the error, which was coming due to some sort of linking issue smile

YasCoMa commented 1 year ago
AnnaTz commented 1 year ago

Hi @YasCoMa, the two functions you are referencing seem to have been reserved already. Please make sure you follow our ToDo issues policy explained here every time you intend to start working on a function.

akshatvishu commented 1 year ago

@khushi-411 Hey, Kushi . I have an idea in mind about implementing erfc for ivy function API but you're tagged in-that hence, pining you in-here .

Also, I see that you've already made a PR https://github.com/unifyai/ivy/pull/16235 but it is showing as closed!

In case you're allowed to collaborate with other people or just want to discuss the implementation in-general ; feel free to ping me !
Writing it in here as I can't find you on discord!

khushi-411 commented 1 year ago

Hey, @akshatvishu! My PR is still open, just that I was on leave for a couple of days, so I kept it draft (i.e., work in progress). I'll make sure to finish that soon. Thanks for your kind interest!

If interested, please feel free to pick any other exciting open issues at Ivy! Thanks.

akshatvishu commented 1 year ago

Hey, @akshatvishu! My PR is still open, just that I was on leave for a couple of days, so I kept it draft (i.e., work in progress). I'll make sure to finish that soon. Thanks for your kind interest!

If interested, please feel free to pick any other exciting open issues at Ivy! Thanks.

@khushi-411 Thanks for the reply ! Also, here was my rough draft of it . Feel free to use/make changes if it is useful!

MarkCodering commented 1 year ago

@johanjino

I created an issue on GitHub for the NCE loss function implementation. Could you link the NCE issue with the latest comment on this page?

Here is the link for that issue page

AnnaTz commented 1 year ago

@johanjino

I created an issue on GitHub for the NCE loss function implementation. Could you link the NCE issue with the latest comment on this page?

Here is the link for that issue page

Here you can find instructions on how to link your issues to our ToDos https://unify.ai/docs/ivy/overview/contributing/the_basics.html#todo-list-issues

YasCoMa commented 1 year ago

But i saw and follow the instructions, it was not implemented even in experimental folder. I do not see a reason to disqualify my contribution.

ogbanugot commented 1 year ago

intersection #17640

ipsitmantri commented 1 year ago

I want to do hypergeometric

AnnaTz commented 1 year ago

I want to do hypergeometric

Hi! You can open an issue for this. Please refer to the ToDo List Issues instructions.

Lekewhite01 commented 1 year ago
sushmanthreddy commented 1 year ago
OmerElshrief commented 1 year ago

max_unpool2d #21207

sgeorgevv commented 1 year ago
sgeorgevv commented 1 year ago

I submitted PR for this issue here https://github.com/unifyai/ivy/pull/21407

sushmanthreddy commented 1 year ago

@AnnaTz @hirwa-nshuti the implementation of log_poisson_loss is implemented wrong and tests are failing for it..can u assign that to me ? I will implement that in the correct way.It was mentioned that it as completed ..but tests are failing for it..can u reopen that issue?

chirag1902 commented 1 year ago
xorsuyash commented 1 year ago

[ ]#22606 intersection

Yodeman commented 1 year ago
wassim249 commented 1 year ago
daxermanGit commented 1 year ago
HemanthSai7 commented 1 year ago

I would like to work on:

RichieOrito commented 1 year ago
Coleman97 commented 1 year ago

26703

shadynagy232 commented 1 year ago

26858

imsoumya18 commented 1 year ago

Hey @johanjino index_add is missing from this list and here is an issue explaining why it needs to be added #26801

Please add it to the list, I will then start working on it in proper file locations