Some tutorials and conclusions about deep learning framework ---- 【pytorch】

1. install the pytorch version 0.1.11 

## Version 0.1.11
## python2.7 and cuda 8.0  pip install http://download.pytorch.org/whl/cu80/torch-0.1.11.post5-cp27-none-linux_x86_64.whl  pip install torchvision

 

2. what happened when following errors occurs ???

Traceback (most recent call last):
  File "examples/triplet_loss.py", line 221, in <module>
  File "examples/triplet_loss.py", line 150, in main
  File "build/bdist.linux-x86_64/egg/reid/evaluators.py", line 118, in evaluate
  File "build/bdist.linux-x86_64/egg/reid/evaluators.py", line 21, in extract_features
  File "/usr/local/lib/python2.7/dist-packages/torch/utils_v2/data/dataloader.py", line 301, in __iter__
  File "/usr/local/lib/python2.7/dist-packages/torch/utils_v2/data/dataloader.py", line 163, in __init__
  File "/usr/local/lib/python2.7/dist-packages/torch/utils_v2/data/dataloader.py", line 226, in _put_indices
  File "/usr/lib/python2.7/multiprocessing/queues.py", line 390, in put
  File "/usr/local/lib/python2.7/dist-packages/torch/multiprocessing/queue.py", line 17, in send
  File "/usr/lib/python2.7/pickle.py", line 224, in dump
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/pickle.py", line 548, in save_tuple
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/pickle.py", line 600, in save_list
  File "/usr/lib/python2.7/pickle.py", line 633, in _batch_appends
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/pickle.py", line 600, in save_list
  File "/usr/lib/python2.7/pickle.py", line 633, in _batch_appends
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/pickle.py", line 562, in save_tuple
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/multiprocessing/forking.py", line 67, in dispatcher
  File "/usr/lib/python2.7/pickle.py", line 401, in save_reduce
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/pickle.py", line 548, in save_tuple
  File "/usr/lib/python2.7/pickle.py", line 286, in save
  File "/usr/lib/python2.7/multiprocessing/forking.py", line 66, in dispatcher
  File "/usr/local/lib/python2.7/dist-packages/torch/multiprocessing/reductions.py", line 113, in reduce_storage
RuntimeError: unable to open shared memory object </torch_29419_2971992535> in read-write mode at /b/wheel/pytorch-src/torch/lib/TH/THAllocator.c:226
Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/util.py", line 274, in _run_finalizers
  File "/usr/lib/python2.7/multiprocessing/util.py", line 207, in __call__
  File "/usr/lib/python2.7/shutil.py", line 239, in rmtree
  File "/usr/lib/python2.7/shutil.py", line 237, in rmtree
OSError: [Errno 24] Too many open files: '/tmp/pymp-QoKm2p'

View Code 

 

3. GPU 和 CPU 数据之间的转换:

  (1)CPU --->  GPU:   a.cuda() 

  (2)GPU ---> CPU:    a.cpu() 

  (3) torch.tensor --->  numpy array: 

    a_numpy_style = a.numpy() 

  (4)numpy array ---> torch.tensor: 

 1 >>> import numpy as np
 2 >>> a = np.ones(5)
 3 >>> b = torch.from_numpy(a)
 4 >>> np.add(a, 1, out=a)
 5 array([ 2.,  2.,  2.,  2.,  2.])
 6 >>> print(a)
 7 [ 2.  2.  2.  2.  2.]
 8 >>> print(b)
 9
10  2
11  2
12  2
13  2
14  2
15 [torch.DoubleTensor of size 5]
16
17 >>> c=b.numpy()
18 >>> c
19 array([ 2.,  2.,  2.,  2.,  2.])

 

4. Variable and Tensor: 

  ==>> programs occured error:

  expected a Variable, but got a Float.Tensor(), ~~~~ 

  ==>> this can be solved by adding: 

from torch.autograd import Variable
hard_neg_differ_ = Variable(hard_neg_differ_) 

  ==>> this will change the hard_neg_differ_ into a variable, not a Float.Tensor() any more. 

  we can read this reference: http://blog.csdn.net/shudaqi2010/article/details/54880748 

  it tell us: 

 

>>> import torch
>>> x  = torch.Tensor(2,3,4)
>>> x

(0 ,.,.) =
1.00000e-37 *
   2.4168  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000

(1 ,.,.) =
1.00000e-37 *
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
[torch.FloatTensor of size 2x3x4]

>>> from torch.autograd import Variable
>>> x = Variable(x)
>>> x
Variable containing:
(0 ,.,.) =
1.00000e-37 *
   2.4168  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000

(1 ,.,.) =
1.00000e-37 *
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
   0.0000  0.0000  0.0000  0.0000
[torch.FloatTensor of size 2x3x4]

View Code

 

  But, you can not directly convert the Variable to numpy() or something else. You can load the values in the Variable and convert to numpy() through: 

  value = varable.data.numpy().

5.  Some Operations about tensor. obtained from blog: http://www.cnblogs.com/huangshiyu13/p/6672828.html 

 

============改变数组的维度==================
已知reshape函数可以有一维数组形成多维数组
ravel函数可以展平数组
b.ravel()
flatten()函数也可以实现同样的功能
区别:ravel只提供视图view,而flatten分配内存存储

重塑:

用元祖设置维度
>>> b.shape=(4,2,3)
>>> b
array([[ 0, 1, 2],
        [ 3, 4, 5],

       [ 6, 7, 8],
        [ 9, 10, 11],

       [12, 13, 14],
        [15, 16, 17],

       [18, 19, 20],
        [21, 22, 23]])

转置:
>>> b
array([0, 1],
       [2, 3])
>>> b.transpose()
array([0, 2],
       [1, 3])

=============数组的组合==============
>>> a
array([0, 1, 2],
       [3, 4, 5],
       [6, 7, 8])
>>> b = a*2
>>> b
array([ 0, 2, 4],
       [ 6, 8, 10],
       [12, 14, 16])

1.水平组合
>>> np.hstack((a,b))
array([ 0, 1, 2, 0, 2, 4],
       [ 3, 4, 5, 6, 8, 10],
       [ 6, 7, 8, 12, 14, 16])
>>> np.concatenate((a,b),axis=1)
array([ 0, 1, 2, 0, 2, 4],
       [ 3, 4, 5, 6, 8, 10],
       [ 6, 7, 8, 12, 14, 16])

2.垂直组合
>>> np.vstack((a,b))
array([ 0, 1, 2],
       [ 3, 4, 5],
       [ 6, 7, 8],
       [ 0, 2, 4],
       [ 6, 8, 10],
       [12, 14, 16])
>>> np.concatenate((a,b),axis=0)
array([ 0, 1, 2],
       [ 3, 4, 5],
       [ 6, 7, 8],
       [ 0, 2, 4],
       [ 6, 8, 10],
       [12, 14, 16])

3.深度组合:沿着纵轴方向组合
>>> np.dstack((a,b))
array([[ 0, 0],
        [ 1, 2],
        [ 2, 4],

       [ 3, 6],
        [ 4, 8],
        [ 5, 10],

       [ 6, 12],
        [ 7, 14],
        [ 8, 16]])

4.列组合column_stack()
一维数组:按列方向组合
二维数组:同hstack一样

5.行组合row_stack()
以为数组:按行方向组合
二维数组:和vstack一样

6.==用来比较两个数组
>>> a==b
array([ True, False, False],
       [False, False, False],
       [False, False, False], dtype=bool)
#True那个因为都是0啊

==================数组的分割===============
>>> a
array([0, 1, 2],
       [3, 4, 5],
       [6, 7, 8])
>>> b = a*2
>>> b
array([ 0, 2, 4],
       [ 6, 8, 10],
       [12, 14, 16])

1.水平分割(难道不是垂直分割???)
>>> np.hsplit(a,3)
[array([0],
       [3],
       [6]),
 array([1],
       [4],
       [7]),
array([2],
       [5],
       [8])]
split(a,3,axis=1)同理达到目的

2.垂直分割
>>> np.vsplit(a,3)
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]

split(a,3,axis=0)同理达到目的

3.深度分割
某三维数组:::
>>> d = np.arange(27).reshape(3,3,3)
>>> d
array([[ 0, 1, 2],
        [ 3, 4, 5],
        [ 6, 7, 8],

       [ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17],

       [18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]])

深度分割后(即按照深度的方向分割)
注意:dsplite只对3维以上数组起作用
raise ValueError('dsplit only works on arrays of 3 or more dimensions')
ValueError: dsplit only works on arrays of 3 or more dimensions

>>> np.dsplit(d,3)
[array([[ 0],
        [ 3],
        [ 6],

       [ 9],
        [12],
        [15],

       [18],
        [21],
        [24]]), array([[ 1],
        [ 4],
        [ 7],

       [10],
        [13],
        [16],

       [19],
        [22],
        [25]]), array([[ 2],
        [ 5],
        [ 8],

       [11],
        [14],
        [17],

       [20],
        [23],
        [26]])]

===================数组的属性=================
>>> a.shape #数组维度
(3, 3)
>>> a.dtype #元素类型
dtype('int32')
>>> a.size #数组元素个数
9
>>> a.itemsize #元素占用字节数
4
>>> a.nbytes #整个数组占用存储空间=itemsize*size
36
>>> a.T #转置=transpose
array([0, 3, 6],
       [1, 4, 7],
       [2, 5, 8])

 6. image paste using python: 

im = Image.open('/home/wangxiao/Pictures/9c1147d3gy1fjuyywz23sj20dl09u3yw.jpg') box = (100,100,500,500)
region = im.crop(box)
im.paste(region,(100,70))
im.show() 

  

 7. pytorch save checkpoints 

torch.save(model.state_dict(), filename)

 

8. install python3.5 on ubuntu system:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.5

when testing, just type: python3.5   

 

9. load imge to tensor & save tensor data to image files. 

def tensor_load_rgbimage(filename, size=None, scale=None):
    img = Image.open(filename)
    if size is not None:
        img = img.resize((size, size), Image.ANTIALIAS)
    elif scale is not None:
        img = img.resize((int(img.size[0] / scale), int(img.size[1] / scale)), Image.ANTIALIAS)
    img = np.array(img).transpose(2, 0, 1)
    img = torch.from_numpy(img).float()
    return img

def tensor_save_rgbimage(tensor, filename, cuda=False):
    if cuda:
        img = tensor.clone().cpu().clamp(0, 255).numpy()
    else:
        img = tensor.clone().clamp(0, 255).numpy()
    img = img.transpose(1, 2, 0).astype('uint8')
    img = Image.fromarray(img)
    img.save(filename)

  

10. the often used opeartions in pytorch:

########################## save log files #############################################
logfile_path = './log_files_AAE_2017.10.08.16:20.txt'
fobj=open(logfile_path,'a')
fobj.writelines(['Epoch: %d Niter:%d Loss_VAE: %.4f Loss_D: %.4f Loss_D_noise: %.4f Loss_G: %.4f D(x): %.4f D(G(z)): %.4f / %.4f \n'
% (EEEPoch, total_epoch, VAEerr.data[0], errD_noise.data[0], errD.data[0], total_errG.data[0], D_x, D_G_z1, D_G_z2)])
fobj.close()
# print('==>> saving txt files ... Done!')

###########################	save checkpoints ###########################
if epoch%opt.saveInt == 0 and epoch!=0:
torch.save(netG.state_dict(), '%s/netG_epoch_%d.pth' % (opt.outf, epoch))
# torch.save(netD.state_dict(), '%s/netD_epoch_%d.pth' % (opt.outf, epoch))
# torch.save(netD_gaussian.state_dict(), '%s/netD_Z_epoch_%d.pth' % (opt.outf, epoch))

# ###########################	save middle images into folders	###########################
# img_index = EEEPoch + index_batch + epoch
# if epoch % 10 == 0:
# vutils.save_image(real_cpu, '%s/real_samples.png' % img_index,
# normalize=True)
# fake = netG.decoder(fixed_noise)
# vutils.save_image(fake.data,
# '%s/fake_samples_epoch_%03d.png' % (img_index, img_index),
# normalize=True)

  

11. error:  RuntimeError: tensors are on different GPUs

 ==>> this is caused you set data into GPU mode, but not pre-defined model. 

 

12.  

  

时间: 2024-09-25 17:49:53

Some tutorials and conclusions about deep learning framework ---- 【pytorch】的相关文章

Install and Compile MatConvNet: CNNs for MATLAB --- Deep Learning framework

Install and Compile MatConvNet: CNNs for MATLAB --- Deep Learning framework  2017-04-18  10:19:35    If you want to use matlab convnet, you just install according to the following tutorials:  1. Download and unzip the original source file from: http:

Deep Learning framework --- MexNet 安装,测试,以及相关问题总结

Deep Learning framework --- MexNet 安装,测试,以及相关问题总结    一.安装:   参考博文:http://www.open-open.com/lib/view/open1448030000650.html  Note: gcc g++ 需要 4.8 版本.   二.

Some Problems for Deep Learning with Theano &amp;&amp; Lasagne framework

  Some Problems for Deep Learning with Theano && Lasagne framework 2017-03-23     1. theano.function output = input ** 2   f = theano.function([input], output) print(f(3))  >> the output is: 3^2 = 9.   2.  verbose = 1 or 0, does it have any

Machine and Deep Learning with Python

Machine and Deep Learning with Python Education Tutorials and courses Supervised learning superstitions cheat sheet Introduction to Deep Learning with Python How to implement a neural network How to build and run your first deep learning network Neur

(转) Awesome Deep Learning

Awesome Deep Learning  Table of Contents Free Online Books Courses Videos and Lectures Papers Tutorials Researchers WebSites Datasets Frameworks Miscellaneous Contributing Free Online Books Deep Learning by Yoshua Bengio, Ian Goodfellow and Aaron Cou

(转) Deep Learning Resources

    转自:http://www.jeremydjacksonphd.com/category/deep-learning/   Deep Learning Resources Posted on May 13, 2015   Videos Deep Learning and Neural Networks with Kevin Duh: course page NY Course by Yann LeCun: 2014 version, 2015 version NIPS 2015 Deep

(转) Learning Deep Learning with Keras

Learning Deep Learning with Keras  Piotr Migdał - blog Projects Articles Publications Resume About Photos Learning Deep Learning with Keras 30 Apr 2017 • Piotr Migdał • [machine-learning] [deep-learning] [overview] I teach deep learning both for a li

QA Systems and Deep Learning Technologies – Part 1

1. Introduction The automatic question and answering (QA) system has been in use for decades now. However, Siri's and Watson's success in 2011 has captured the whole industry's attention. Since the success of these two technologies, the automatic QA

QA Systems and Deep Learning Technologies – Part 2

Introduction This is the second article in a two part series about QA Systems and Deep Learning. You can read part 1 here. Deep Learning is a subfield of machine learning, and aims at using machines for data abstraction with the help of multiple proc