Nouveau conteneur Ubuntu créé avec Docker
CentOS release 6.6
Caffe 3e12d49324793d4798ee10bb6ef6a1c1b7633baf (git log | head -n 1
)
Pylearn2 9870dec593c71c194ebc2044973f65acc32c8675
Docker Hub
Pour ceux qui veulent l'essayer pour le moment, Docker Hub est un conteneur Docker qui a construit l'environnement pour Caffe (y compris le wrapper python) et Pylearn2. Publié dans /). Veuillez consulter les informations du référentiel pour plus de détails.
Caffe
bash
# docker pull cordea/pycaffe
Dans cet article, c'est un conteneur qui a fini jusqu'à "faire".
Pylearn2
bash
# docker pull cordea/pylearn2
C'est un conteneur qui a fini jusqu'à "chemin".
Create user
Si vous pouvez être root, veuillez l'ignorer.
bash
# username="your user name"
# adduser --disabled-password --gecos '' $username
# adduser $username sudo
# echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# su $username
Installez uniquement les bases pour le moment Il existe d'autres packages courants, mais ...
$ sudo apt-get update
$ sudo apt-get install python vim git wget
Caffe
Cette fois, nous fonctionnerons en ** mode CPU **, nous n'installerons donc pas le pilote graphique NVIDIA.
Installation
$ sudo apt-get install make bc libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libblas-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler libsvm-dev libsvm3 libsvm-tools
PyCaffe Anaconda Python est recommandé, mais je ne vais pas l'utiliser cette fois car il est gênant avec Linux.
Si vous le mettez officiellement dans pip
(vous devez probablement installer gfortran
en plus)
$ sudo apt-get install python-pip
$ cd ~/caffe/python/
$ for req in $(cat requirements.txt); do sudo pip install $req; done
Si vous voulez gérer avec ʻapt-get` autant que possible
$ sudo apt-get install python-pip python-scipy python-matplotlib python-scikits-learn ipython python-h5py python-leveldb python-networkx python-nose python-pandas python-dateutil python-protobuf python-yaml python-gflags python-skimage cython
CUDA
$ cd ~
$ cd
$ chmod u+x cuda_6.5.14_linux_64.run
$ ./cuda_6.5.14_linux_64.run
Do you accept the previously read EULA? (accept/decline/quit): accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 340.29? ((y)es/(n)o/(q)uit): n
Install the CUDA 6.5 Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-6.5 ]:
/usr/local/cuda-6.5 is not writable.
Do you wish to run the installation with 'sudo'? ((y)es/(n)o): y
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y
Install the CUDA 6.5 Samples? ((y)es/(n)o/(q)uit): n
Installing the CUDA Toolkit in /usr/local/cuda-6.5 ...
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-6.5
Samples: Not Selected
$ sudo ldconfig /usr/local/cuda-6.5/lib64/
$ rm cuda_6.5.14_linux_64.run
make
$ git clone https://github.com/BVLC/caffe
$ cd caffe/
$ cp Makefile.config.example Makefile.config
$ echo "CPU_ONLY := 1" >> Makefile.config # 1/26 Addendum
$ make all
$ make test
$ make runtest
...
[----------] Global test environment tear-down
[==========] 457 tests from 98 test cases ran. (14811 ms total)
[ PASSED ] 457 tests.
Tutorial
$ vim examples/mnist/lenet_solver.prototxt
$ ./data/mnist/get_mnist.sh
$ ./examples/mnist/create_mnist.sh
$ ./examples/mnist/train_lenet.sh
PyCaffe Tutorials
Suivez le tutoriel selon Classification facile des images avec Caffe.
$ cd ~/caffe/examples/imagenet/
$ wget https://raw.githubusercontent.com/sguada/caffe-public/master/models/get_caffe_reference_imagenet_model.sh
$ chmod u+x get_caffe_reference_imagenet_model.sh
$ ./get_caffe_reference_imagenet_model.sh
$ cd ~/caffe/data/ilsvrc12/
$ ./get_ilsvrc_aux.sh
$ cd ~/caffe/
$ wget http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz
$ tar xzvf 101_ObjectCategories.tar.gz
$ echo "export PYTHONPATH=$HOME/caffe/python:$PYTHONPATH" >> ~/.bashrc
$ source ~/.bashrc
$ cd ~/caffe/python/
$ python classify.py --raw_scale 255 ../101_ObjectCategories/airplanes/image_0001.jpg ../result.npy
Suivez le lien ci-dessus pour créer et exécuter show_result.py
.
$ cd ~/caffe/
$ python show_result.py data/ilsvrc12/synset
synset_words.txt synsets.txt
$ python show_result.py data/ilsvrc12/synset_words.txt result.npy
#1 | n04552348 warplane, military plane | 84.8%
#2 | n04008634 projectile, missile | 5.5%
#3 | n02690373 airliner | 5.1%
Il semble que io de numpy et io.py du conflit PyCaffe. (Problème étrange avec Python # 782)
$ python classify.py --raw_scale 255 ~/caffe/101_ObjectCategories/airplanes/image_0001.jpg ../result.npy
Traceback (most recent call last):
File "classify.py", line 7, in <module>
import numpy as np
...
File "/usr/local/lib/python2.7/dist-packages/skimage/util/dtype.py", line 8, in <module>
dtype_range = {np.bool_: (False, True),
AttributeError: 'module' object has no attribute 'bool_'
Renommez ʻio.pyen
caffe_io.py, ce qui est une méthode déraisonnable. Si vous le renommez ici, vous devez également le renommer dans le fichier
feature.py` créé dans la prochaine" Classification utilisant Caffe comme extracteur de fonctionnalités ".
$ cd ~/caffe/python/
$ aftfile="caffe_io"
$ for file in `find . -name "*.py"`; do; cat $file | sed -e "s/import [\w\.]*io/import $aftfile/g" | sed -e "s/caffe\.io/caffe\.$aftfile/g" > $file".tmp";mv $file".tmp" $file; done
$ mv "caffe/io.py" "caffe/"$aftfile".py"
J'ai complètement oublié de revenir à la branche précédente, alors peut-être qu'il y a quelque chose d'un peu différent.
$ cd ~/caffe
$ cp examples/imagenet/imagenet_deploy.prototxt examples/imagenet/imagenet_feature.prototxt
$ vim examples/imagenet/imagenet_feature.prototxt
Modifiez ʻimagenet_feature.prototxt` comme suit.
imagenet_feature.prototxt
...
154 top: "fc6wi"
...
162 bottom: "fc6wi"
...
deeplearning-tutorials Créez un fichier avec des fonctionnalités au format libsvm.
$ cd ~/caffe/
$ git clone https://github.com/CORDEA/deeplearning-tutorials
$ mv ~/caffe/deeplearning-tutorials/caffe/feature.py ~/caffe/
$ python feature.py
Ou
$ cd ~/caffe/
$ wget https://raw.githubusercontent.com/CORDEA/deeplearning-tutorials/master/caffe/feature.py
$ python feature.py
La commande train
devient svm-train
La commande predire
devient svm-predict
Veuillez noter que chaque nom a changé.
$ svm-scale -s scale.txt train.txt > train_scaled.txt
$ svm-scale -r scale.txt test.txt > test_scaled.txt
$ svm-train -c 0.03 train_scaled.txt caltech101.model
Fine tuning
Préparez les fichiers nécessaires.
Quand git clone
est fait dans" Classification utilisant Caffe comme extracteur de fonctionnalités "
$ cd ~/caffe/
$ mv ~/caffe/deeplearning-tutorials/caffe/fine_tuning.py ~/caffe/
$ python fine_tuning.py
Quand wget
$ cd ~/caffe/
$ wget https://raw.githubusercontent.com/CORDEA/deeplearning-tutorials/master/caffe/fine_tuning.py
$ python fine_tuning.py
Puisque les spécifications de convert_imageset.bin
ont changé, cela ne fonctionnera pas selon l'article de référence.
Je ne sais pas lequel des indicateurs actuels «1» est spécifié dans l'article de référence, mais je suis en train de juger qu'il s'agit probablement de «-gris».
$ build/tools/convert_imageset.bin -gray -resize_width 256 -resize_height 256 101_ObjectCategories/ train.txt caltech101_train_leveldb
$ build/tools/convert_imageset.bin -gray -resize_width 256 -resize_height 256 101_ObjectCategories/ val.txt caltech101_val_leveldb
$ build/tools/compute_image_mean.bin caltech101_train_leveldb caltech101_mean.binaryproto
Veuillez noter que la destination de référence a changé par rapport à l'article de référence.
$ cp ~/caffe/models/bvlc_reference_caffenet/*.prototxt ~/caffe/
$ cd ~/caffe/
$ sed -i -e 's/fc8/fc8ft/g' train_val.prototxt deploy.prototxt
Veuillez modifier la partie suivante avec un éditeur (tel que vi).
solver.prototxt
1 net: "train_val.prototxt"
...
4 base_lr: 0.001
...
14 solver_mode: CPU
train_val.prototxt
8 source: "caltech101_train_leveldb"
9 backend: LEVELDB
...
14 mean_file: "caltech101_mean.binaryproto"
...
25 source: "caltech101_val_leveldb"
26 backend: LEVELDB
...
31 mean_file: "caltech101_mean.binaryproto"
...
321 num_output: 102
deploy.prototxt
5 input_dim: 256
6 input_dim: 256
...
204 num_output: 102
$ build/tools/caffe train -solver solver.prototxt
Pylearn2
Installation
$ sudo apt-get install python-setuptools python-pip python-dev python-numpy python-scipy python-yaml python-matplotlib liblapack-dev python-nose2 cython
$ sudo pip install theano
$ cd ~
$ git clone https://github.com/lisa-lab/pylearn2.git
$ cd pylearn2
$ sudo python setup.py develop
path
$ echo "export PATH=$HOME/pylearn2/pylearn2/scripts/:$PATH" >> ~/.bashrc
$ echo "export PYLEARN2_DATA_PATH=$HOME/.data/lisa/data" >> ~/.bashrc
$ source ~/.bashrc
Tutorials
Gaussian-Bernoulli RBM examples using CIFAR10
$ cd ~/pylearn2/pylearn2/scripts/datasets/
$ ./download_cifar10.sh
$ cd ~/pylearn2/pylearn2/scripts/tutorials/grbm_smd/
$ python make_dataset.py
$ train.py cifar_grbm_smd.yaml
$ show_weights.py cifar_grbm_smd.pkl --out weights_result.png #Si vous avez une interface graphique--ne doit pas être
$ plot_monitor.py cifar_grbm_smd.pkl --out monitor_result.png
Put e, b, s or h in the list somewhere to plot epochs, batches, seconds, or hours, respectively.
Enter a list of channels to plot (example: A, C,F-G, h, <test_err>) or q to quit or o for options: b,L,M
set x_axis to example
A. bias_hid_max:cifar_grbm
B. bias_hid_mean:cifar_grbm
C. bias_hid_min:cifar_grbm
D. bias_vis_max:cifar_grbm
E. bias_vis_mean:cifar_grbm
F. bias_vis_min:cifar_grbm
G. h_max:cifar_grbm
H. h_mean:cifar_grbm
I. h_min:cifar_grbm
J. learning_rate:cifar_grbm
K. objective:cifar_grbm
L. reconstruction_error:cifar_grbm
M. total_seconds_last_epoch:cifar_grbm
N. training_seconds_this_epoch:cifar_grbm
Put e, b, s or h in the list somewhere to plot epochs, batches, seconds, or hours, respectively.
Enter a list of channels to plot (example: A, C,F-G, h, <test_err>) or q to quit or o for options: q
Lors de l'exécution avec docker
Copiez simplement en local avec docker cp
% container="pylearn2" # Enter the container ID or name
% for file in `echo weights_result.png monitor_result.png`;do;docker cp $container:/home/cordea/pylearn2/pylearn2/scripts/tutorials/grbm_smd/$file /host/path/to/dir/;done
% open *.png # for Mac
SdA examples using MNIST
$ cd ~/pylearn2/pylearn2/scripts/datasets/
$ python download_mnist.py
$ cd ~/pylearn2/pylearn2/scripts/tutorials/stacked_autoencoders/tests
$ python test_dae.py
** Si vous souhaitez utiliser csv tel quel, here vous sera utile. ** **
Cette fois, je vais vous montrer comment créer pkl à partir de csv.
Convertissez l'image en csv après redimensionnement et échelle de gris.
$ cd ~
$ git clone https://github.com/CORDEA/deeplearning-tutorials.git
$ cd deeplearning-tutorials/pylearn2
$ mkdir in
convertImage.py
est créé en supposant la structure de répertoire suivante.
Veuillez utiliser le nom du répertoire comme informations d'étiquette.
.
├── convertImage.py
├── in
├── hoge # label name
| ├── hogehoge.png
| ...
|
├── huge
| ├── hugehuge.png
| ...
...
$ python convertImage.py
Transformez le train.csv
créé en un fichier pkl.
$ python createpkl.py
Je pense que vous pouvez utiliser train.pkl
en vous référant à l'exemple de ~ / pylearn2 / pylearn2 / scripts / tutorials /
.
Le nombre de classes est illustré par 10.
$ cd ~/pylearn2/pylearn2/scripts/tutorials/dbm_demo/
$ cp ~/deeplearning-tutorials/pylearn2/train.pkl ./
rbm.yaml
13,21c13
< dataset: &data !obj:pylearn2.datasets.binarizer.Binarizer {
< # We use the "raw" tag to specify the underlying dataset defining
< # the sampling probabilities should be MNIST.
< raw: &raw_train !obj:pylearn2.datasets.mnist.MNIST {
< which_set: "train",
< start: 0,
< stop: %(train_stop)i
< }
< },
---
> dataset: !pkl: "train.pkl",
train_dbm.py
22 hyper_params = {'detector_layer_dim': 10,
$ python train_dbm.py rbm.yaml
$ show_weights.py dbm.pkl --out figure.png
pylearn2/pylearn2/space/__init__.py
794 raise TypeError(Cannot safely cast batch dtype %s to space's dtype %s. % (batch.dtype, self.dtype))
J'ai eu une erreur ici, mais cela ne s'est pas bien passé, même si j'ai dérangé les données.
pylearn2/pylearn2/space/__init__.py
794 # raise TypeError("Cannot safely cast batch dtype %s to "
795 print "Might not be safely cast batch dtype %s to space's dtype %s." \
796 % (batch.dtype, self.dtype)
pylearn2/pylearn2/format/target_format.py
98 try:
99 print "Run the conversion to int64 from %s" % (targets.dtype)
100 targets = np.array([[int(r) for r in label] for label in targets])
101 except:
102 raise TypeError("need an integer array for targets, %s" % (targets.dtype))
Pour l'instant, je le déplace de force comme ça ...
Je vous remercie pour votre travail acharné.
Caffe
Pylearn2
[Pylearn2 I want to get started - rire blog](http://laughing.hatenablog.com/entry/2013/11/30/pylearn2_%E5%85%A5%E9%96%80%E3%81%97% E3% 81% 9F% E3% 81% 84% E7% B7% A8)
Deep Learning avec Caffe, se concentrant sur les endroits où vous pouvez facilement trébucher
Effectuer la reconnaissance de caractères manuscrits à l'aide de Pylearn2
Installation et tutoriel de la désormais bibliothèque d'apprentissage en profondeur "Pylearn2"
[Apprentissage automatique pour les hommes - Obtenons les caractéristiques communes des actrices A ◯ avec RBM --- Nouveau journal de kensuke-mi](http://kensuke-mi.xyz/kensuke-mi_diary/2014/11/ rbma.html)
Échelle de gris et art des images ASCII par Python / PIL --Soleil cou coupé