Abstract
This paper shows how a Convolutional Neural Network (CNN) can be implemented in APL. Its first-class array support ideally fits that domain, and the operations of APL facilitate rapid and concise creation of generically reusable building blocks. For our example, only ten blocks are needed, and they can be expressed as ten lines of native APL. All these blocks are purely functional, and they are built out of a small number of builtin operators, resulting in a highly portable specification that is immediately runnable and should be suitable for high-performance optimizations and parallel execution. This implies that APL can be seen as a framework to define shallowly-embedded machine learning DSLs without any external dependencies, making them useful at least for experiments and prototyping. We explain the construction of each CNN building block, and briefly discuss the performance of the resulting specification.
Original language | English |
---|---|
Title of host publication | Proceedings of the 6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming |
Editors | Jeremy Gibbons |
Publisher | Association for Computing Machinery |
Pages | 69-79 |
Number of pages | 11 |
ISBN (Electronic) | 9781450367172 |
DOIs | |
Publication status | Published - 8 Jun 2019 |
Event | 6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming 2019 - Phoenix, United States Duration: 22 Jun 2019 → 22 Jun 2019 |
Conference
Conference | 6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming 2019 |
---|---|
Abbreviated title | ARRAY 2019 |
Country/Territory | United States |
City | Phoenix |
Period | 22/06/19 → 22/06/19 |
Keywords
- APL
- Arrays
- CNN
- DSL
- Neural networks
ASJC Scopus subject areas
- Software