Going along with the topic of machine learning/ai/...
# datascience
p
Going along with the topic of machine learning/ai/deep learning/neural networks I'll like to share some experimental projects I've been working on. As I mentioned some time ago, I've been experimenting with Tensorflow and Kotlin. Now that gradients are being ported to C++, they are available on other backends apart from Python and I see a lot of potential in Kotlin to develop complex models using DSLs. This is the motivation of Komputo (https://github.com/TomasVolker/komputo), a Kotlin wrapper around Tensorflow for Java. It is in very early stages but I was able to build and train fully connected and convolutional models all in Kotlin using GPU acceleration, you can check the MNIST examples on the repository. I was also able to load the Yolov3 object recognition model with Komputo, here is the repo: https://github.com/TomasVolker/kolo. I'm using Numeriko (https://github.com/TomasVolker/numeriko) for ndarray manipulation, I've been putting some effort on it lately to improve it's performance. It's clear that to enable this kind of applications we need an idiomatic, efficient and complete ndarray library, so I'm working on it whenever I have some free time. I see Numeriko as a lower level library than @altavir's kmath, we can eventually create contexts to make them compatible. Let me know if any of you are interested in contributing.
👏 1
👍 1
🔥 1
a
I've looked through numeriko. And it is not more lower level. For most part we have intersecting functionality. Of course, kmath is more about design and less about implementation, but it have basic implementations for all features. Would you like to combine efforts instead of parallel development?
p
It's true that there is intersecting functionality, we should work together on those points. The core of numeriko is to provide a self contained ndarray container, with the same use and feel of native arrays. It would be independent of the whole mathematical framework of kmath, and it could potentially take advantage of it with other libraries. The truth is that I'm developing these tools quickly for my studies, I'm currently following a Masters on Image and Signal processing and I'm using numeriko for my projects, building what I need on the way. I have around a month left of courses, so after that I'll have some time to see how we can integrate everything together, it would be interesting to see what it can come up from this.
a
OK than. Because it does not make sense to have several libraries doing the same thing. Better to integrate them in one. Kmath uses different from numpy approach to nd arrays operations, but I think it is better suited for kotlin functional capabilities. I would welcome any implementation improvement and suggestions for API changes.
p
Sure, I'll see how can I integrate my work to kmath, we both want a unified ecosystem but I'll need time for that. In the meantime I'm interested on your feedback of komputo, you said you might have some tasks using Tensorflow and wanted to see other options than Python and C++ right?
a
I think it is very important step forward. Personally, I do not work with tensor-flow, so I do not know regular pattern for using it, but of course we should make APIs for it since it is used quite broadly. Also we need to prepare the package for multi-platform use. Is there a JS front?
p
Apparently there is a JS front for Tensorflow which I'm not familiar with. I imagine it won't be trivial to have a multiplatform project using each platform's corresponding Tensorflow frontend, I also don't have experience with multiplatform projects. For now I'm using this project for prototyping and experimenting on a controlled runtime environment, maybe in the future I can work on other backends.
a
Well, I currently work in multiplatform. We can investigate it later
g
@altavir Do you have a repository where you're putting it all together?
a
Documentation needs an update since we moved away from Python-like paradigm and left it to
koma
.
g
LaTeX's
koma
? I don't see any examples of how it's used. If you have done any examples, I'll go through them and try to add a fresh coat of documentation.
a
I am going for a next release of kmath, so I will stop feature development and focus on documentation in next few days.
g
Great, I'm looking forward to it.
a
Little short on time right now. Also currently kmath is quite expermental. I found that I do not like to duplicate python and want to do it in a kotlin way, so there are some brand new concepts involved and not a lot of end-user sugar. I really need some help keeping it all in check (limiting my fantasy), documenting, and, most importantly, providing use cases.
g
Short on time? What does your timeline look like? Do you have a version 1.0 scheduled in three months? 😉 I'm not very technically proficient with Kotlin, but I do enjoy doing documentation. I'd be happy to help you fill out your project cards on Github.
a
No, definitely not in 3 months. Those libraries take a long time to build. More like years.
1.0 requires full multiplatform support and it is not out of beta in kotlin itself..
Current aim is the minimal core funcionality and I hope to get it untill the end of summer.