deepjavalibrary / djl

An Engine-Agnostic Deep Learning Framework in Java
https://djl.ai
Apache License 2.0
4.07k stars 648 forks source link

Manual porting of QPPWG(Quasi Periodic Parrallel Wave-Gan) #338

Open xwaeaewcrhomesysplug opened 3 years ago

xwaeaewcrhomesysplug commented 3 years ago

Description

(A clear and concise description of what the feature is.) A api that can let user uses QPPWG not in a very user friendly sense. This is just the start.I also do not have enough experience in this repo.

Will this change the current api? How?

Proably no,just adding stuff in or can even seperate packaging. The original api is also well built for extending should h=not have huge problem.

Who will benefit from this enhancement?

everyone who uses it.lol

References

Extra notes and questions. I am just a 19 years old jobless human and currently did not take any college etc.. So please bear with my stupidity or lack of experience in various things.

I think this will need two phase. 1)Making various parts.(Why?Because it introduces few new parts that is custom and implemented in pure python..) 2)Making sure it will works.(Yes,I am new and do not have confident in setting it up and testing it.)

Of course a more experienced contributor can port it.I just simply need to use it.

zachgk commented 3 years ago

Hi @xwaeaewcrhomesysplug Do you have any interest in trying to port the model yourself? If you are looking to get some experience in the repo, take a look at our 10 minute beginner tutorial or the dive into deep learning DJL book.

Porting is fairly straightforward because most of the concepts align 1:1. It is usually just a line by line conversion. If you run into problems, feel free to ask here or on the slack channel. What do you think?

xwaeaewcrhomesysplug commented 3 years ago

Well if there are more experienced developer that can do the porting then I will not do it. Simply because I will probably take more time to do it and also hinder the experienced one. So I will do it as a last resort.But,forgive me if I had some stupid questions.hahaha. Thanks,I will look into the material you give and try porting it after I setup my env.

xwaeaewcrhomesysplug commented 3 years ago

Starting to port. Question one. Conv1d(residual_channels,gate_channels,.....), Assume,channels refers to depth channels.But,djl Conv1d does not seem to have an equivalent.Anyone have some insights?

zachgk commented 3 years ago

Use setFilters to set the number of output channels. The number of input channels is inferred during the first usage.

xwaeaewcrhomesysplug commented 3 years ago

Thanks for reply,nice did not knew it would auto deduce input channel size. Will implement accordingly.Of course will also add documentation for future users.

xwaeaewcrhomesysplug commented 3 years ago

The function signature in .../DJL080/api/javadoc/ai/djl/nn/convolutional/Convolution.html#forward-ai.djl.training.ParameterStore-ai.djl.ndarray.NDList-boolean-ai.djl.util.PairList- is not supposed to change right? However the parameterStore is porbably not needed.The ai.djl.util.PairList<java.lang.String,java.lang.Object> is also not needed. But I think there's probably some automation made based on this.Anyone have insights on what classes uses these info? If no,then how can i somehow satisfy the forward parameters? Or I can or should simply just Override it and screw the predictable inheritance?(Big brain) (Clone in slack dev channel)

xwaeaewcrhomesysplug commented 3 years ago

how to create conv1d1x1.depth wise convolution? new ai.djl.ndarray.types.Shape(1l,1l),it does not seems to specific which is the entry is width,height,depth.

xwaeaewcrhomesysplug commented 3 years ago

ai.djl.nn.convolutional.Conv1 to NDarray. Since we have the abstraction useful classes.like ai.djl.nn.convolutional.Conv1d However the classes have static function that takes,ndarray.not the created conv1d object. Anyone had idea how to solve this problem?Or any experience like this?