https://blog.csdn.net/zz2230633069/article/details/82669546
1.numpy類型:numpy.ndarray 對於圖片讀取以後(H,W,C)或者(batch,H,W,C)python
(1)在元素總數不變的狀況下:numpy類型的能夠直接使用方法numpy.reshape任意改變大小,numpy.expand_dims增長維度,大小是1(這個函數能夠參考numpy.expand_dims的用法)數組
(2)元素總數能夠變化:scipy.misc.imresize(a,size)session
2.TensorFlow的類型:tensorflow.python.framework.ops.tensor 圖片的計算格式(H,W,C)或者(batch,H,W,C)函數
(1)在元素總數不變的狀況下:numpy能夠直接做爲Tensor的輸入,一旦被放在tf的函數下則失去了numpy的使用方法。tf.expand_dims在指定維度增長1維,大小爲1;tf.squeeze恰好相反,刪掉維度爲1的軸(這兩個函數能夠參考tf.expand_dims和tf.squeeze函數);url
(2)元素總數能夠變化:spa
-
'''
-
tf和numpy之間的轉化
-
'''
-
import tensorflow as tf
-
-
a= tf.zeros(( 3,2))
-
sess=tf.Session()
-
sess.run(tf.global_variables_initializer())
-
-
print( "type(a)=",type(a)) # type(a)= <class 'tensorflow.python.framework.ops.Tensor'>
-
-
#轉化爲numpy數組
-
a_np=a.eval(session=sess)
-
print( "type(a_np)=",type(a_np)) # type(a_np)= <class 'numpy.ndarray'>
-
#轉化爲tensor
-
a2= tf.convert_to_tensor(a_np)
-
print( "type(a2)=",type(a2)) # type(a2)= <class 'tensorflow.python.framework.ops.Tensor'>
-
-
3.torch類型:torch.tensor 圖片的計算格式是(C,H,W)或者(batch,C,H,W).net
numpy類型不能直接做爲Tensor的輸入,因此在運用torch以前必定要進行轉化。code
-
from PIL import Image
-
import torch
-
import numpy as np
-
import matplotlib.pyplot as plt
-
a=Image.open( '/home/zzp/um_lane_000000.png') # 加載圖片數據,返回的是一個PIL類型
-
b=np.array(a).astype(np.float32) # 先將PIL類型轉化成numpy類型,而且把數據變成浮點數
-
c=b.transpose(( 2,0,1)) # 調整成torch的通道
-
d=torch.from_numpy(c).float() # 再將numpy類型轉化成torch.tensor類型
-
-
# 或者另一種加載圖片的方式
-
import scipy.misc
-
import torch
-
import numpy as np
-
a=scipy.misc.imread( '/home/zzp/um_lane_000000.png') # 加載圖片數據,返回的是一個numpy類型
-
c=a.transpose(( 2,0,1)).astype(np.float32) # 直接調整成torch的通道,不須要轉化成numpy類型了,仍是要變爲浮點數
-
d=torch.from_numpy(c).float() # 再將numpy類型轉化成torch.tensor類型
-
-
# 三種加載圖像的方法
-
a=Image.open( '/home/zzp/um_lane_000000.png')
-
b=scipy.misc.imread( '/home/zzp/um_lane_000000.png')
-
c=plt.imread( '/home/zzp/um_lane_000000.png')
-
#顯示
(1)在元素總數不變的狀況下blog
(2)元素總數能夠變化圖片