Como extrair o recurso para uma imagem após o treinamento da rede neural?

votos
2

Existe uma maneira de aprender recursos sem supervisão de conjunto de imagens. Semelhante ao word2vec ou doc2vec, onde a rede neural é aprendido e dado novo documento chegarmos suas características.

Esperando semelhante a este exemplo https://dato.com/learn/gallery/notebooks/food_retrieval-public.html mostra que ele pode carregar nn-modelo aprendido e prever recursos para novas imagens.

Existe algum exemplo simples como implementar CNN sobre as imagens e obter os seus recursos de volta vai ajudar !!

Suponhamos neste exemplo https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py Se eu quiser obter recursos cnn para todos X_train e X_test ... existe alguma maneira? Além disso, se podemos obter pesos por camada por imagem, que pode empilhá-los e usar como recursos. Nesse caso, há uma maneira de obter a mesma. Usando esses recursos para tarefas sem supervisão seria mais fácil, se considerá-los como vetores.

Publicado 12/04/2016 em 06:24
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Se bem entendi sua pergunta, esta tarefa é bastante comum em um campo de aprendizagem profunda. No caso de imagens que eu considero o melhor é um autoencoder convolucional. Você pode ler sobre essa arquitetura, por exemplo aqui

http://people.idsia.ch/~ciresan/data/icann2011.pdf

versão anterior do Keras apoiou esta arquitetura como uma das camadas do núcleo, embora a partir da versão 1.0, notei que ele desapareceu de documentação. Mas - ainda é bastante fácil de construir a partir de um arranhão :)

Em casos noimage há também outros métodos, como por exemplo restritos Boltzmann Machines.

UPDATE:

Quando se trata de que tipo de ativações são os melhores para a obtenção de novos recursos de ativações de redes neurais - da minha experiência pessoal - que depende do tamanho da rede que você usa. Se você usar uma rede que última camada é grande (tem um monte de nós) pode ser útil para obter apenas última camada (devido ao número de parâmetros, se você considerar também as camadas anteriores - pode prejudicar o desempenho da aprendizagem). Mas - se (como no caso de algumas redes MNIST) a sua última camada não é suficiente para esta tarefa - você pode tentar usar também a ativação camadas anterior ou até mesmo toda a atividade net. Para ser honesto - Eu não estou esperando muito da melhoria neste caso - mas você pode tentar. Eu acho que você deve usar ambas as abordagens - a partir tendo apenas últimos ativações camada - e, em seguida, tentando verificar o comportamento do seu novo classificador quando você adiciona ativações de camadas anteriores.

O que vou recomendo fortemente a você também está recebendo algumas idéias de que tipo de rede de recursos é aprender - usando embeddings T-PND dele ativações. Em muitos casos, eu achei que seria útil - por exemplo, verificar se o tamanho de uma camada é suficiente. Usando T-SNE você pode verificar se os recursos obtidos a partir última camada são bons discriminadores de suas classes. Ele também pode lhe dar bons insights sobre seus dados e que as redes neurais são realmente de aprendizagem (ao lado com visualizações surpreendentes :))

Respondeu 12/04/2016 em 07:29
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more