Submitted by boutta_call_bo_vice t3_zpt405 in deeplearning

Recently learning about CNNs, and it was pretty interesting that the filter components themselves are the learned weights. I get how that works. However my prior naive understanding was that you would have a selection of known filters (edge detection, etc) with weights on the connections as in basic neural networks. Is there any reason or precedent to have both types? That is, to have an architecture where you force the CNN to have edge detection etc. As one of its feeders to the next layer while letting other filters be learned in the standard way? Thanks in advance

5

Comments

You must log in or register to comment.

invoker96_ t1_j0umchs wrote

While defining fixed weights defeats the purpose of 'learning', you may add some filters and set them non-trainable if you have domain experience. In fact, transfer learning can be seen as fixing primary/coarse filters and learning finer ones.

7

Logon1028 t1_j0vg2lk wrote

In theory, if the CNN needs an edge detection filter then it will learn it through training the weights. Yes, adding known filters can sometimes improve performance if you know your dataset extremely well. But humans are honestly really bad at programming complex detection tasks like these. The network might not even need those known filters. At which point you are just wasting computation time. Majority of the time its better to just let the network do its thing and learn the filters itself.

6

Personal-Trainer-541 t1_j0ugmsl wrote

IMO nothing can stop you to do that. However, the whole point of DL (CNNs) is that you remove most of the feature extracting step (e.g. edge filters) and let the model learn the necessary features/patterns directly from the data.

4

mschrimpf t1_j10xnch wrote

Here's an example of a CNN where the first layer is set to a fixed front-end while the rest of the network is learned (in this case the fixed front-end is a more neuroscientific model of early visual cortex V1): paper, github

1