[
https://issues.apache.org/jira/browse/SPARK-9273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14992447#comment-14992447
]
Alexander Ulanov edited comment on SPARK-9273 at 11/5/15 8:50 PM:
------------------------------------------------------------------
Hi Yuhao. Sounds good! Thanks for refactoring the code to support ANN internal
interface. Also, I was able to run your example. It shows increasing accuracy
while training however it is not very fast. Does it work with LBFGS?
There is a good explanation how to use matrices multiplication in convolution:
http://cs231n.github.io/convolutional-networks/. Basically, one needs to roll
all image patches (regions that will be convolved) the into vectors and stack
them together in a matrix. The weights of convolutional layer also should be
rolled into vectors and stacked. Multiplying two mentioned matrices provides
the convolution result that can be unrolled to 3d matrix, however it would not
be necessary for this implementation. We can discuss it offline if you wish.
Besides the optimization, there are few more things to be done. It includes
unit tests for new layers, gradient test, representing pooling layer as
functional layer, and performance comparison with the other implementation of
CNN. You can take a look at the tests I've added for MLP
https://issues.apache.org/jira/browse/SPARK-11262 and MLP benchmark at
https://github.com/avulanov/ann-benchmark. A separate branch/repo for these
developments might be a good thing to do. I'll be happy to help you with this.
was (Author: avulanov):
Hi Yuhao. Sounds good! Thanks for refactoring the code to support ANN internal
interface. Also, I was able to run your example. It shows increasing accuracy
while training however it is not very fast.
There is a good explanation how to use matrices multiplication in convolution:
http://cs231n.github.io/convolutional-networks/. Basically, one needs to roll
all image patches (regions that will be convolved) the into vectors and stack
them together in a matrix. The weights of convolutional layer also should be
rolled into vectors and stacked. Multiplying two mentioned matrices provides
the convolution result that can be unrolled to 3d matrix, however it would not
be necessary for this implementation. We can discuss it offline if you wish.
Besides the optimization, there are few more things to be done. It includes
unit tests for new layers, gradient test, representing pooling layer as
functional layer, and performance comparison with the other implementation of
CNN. You can take a look at the tests I've added for MLP
https://issues.apache.org/jira/browse/SPARK-11262 and MLP benchmark at
https://github.com/avulanov/ann-benchmark. A separate branch/repo for these
developments might be a good thing to do. I'll be happy to help you with this.
> Add Convolutional Neural network to Spark MLlib
> -----------------------------------------------
>
> Key: SPARK-9273
> URL: https://issues.apache.org/jira/browse/SPARK-9273
> Project: Spark
> Issue Type: New Feature
> Components: MLlib
> Reporter: yuhao yang
>
> Add Convolutional Neural network to Spark MLlib
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]