維度不同的張量的加減乘除


# 加法
from
keras import backend as K import numpy as np a = K.reshape(K.constant(np.arange(12)), [1,2,2,3]) b = K.reshape(K.constant(np.arange(6)), [2,1,3]) c=a+b tf_session = K.get_session() print(K.shape(a).eval(session=tf_session)) print(a.eval(session=tf_session)) print(K.dtype(a)) print(K.shape(b).eval(session=tf_session)) print(b.eval(session=tf_session)) print(K.dtype(b)) print(K.shape(c).eval(session=tf_session)) print(c.eval(session=tf_session)) print(K.dtype(c)) [1 2 2 3] [[[[ 0. 1. 2.] [ 3. 4. 5.]] [[ 6. 7. 8.] [ 9. 10. 11.]]]] float32 [2 1 3] [[[0. 1. 2.]] [[3. 4. 5.]]] float32 [1 2 2 3] [[[[ 0. 2. 4.] [ 3. 5. 7.]] [[ 9. 11. 13.] [12. 14. 16.]]]] float32

相當於自動填充對應維度,維度相同后,再相加。

# 減法
from keras import backend as K
import numpy as np
a = K.reshape(K.constant(np.arange(1,13,1)), [1,2,2,3])
b = K.reshape(K.constant(np.arange(1,7,1)), [2,1,3])
c=a-b
tf_session = K.get_session()
print(K.shape(a).eval(session=tf_session))
print(a.eval(session=tf_session))
print(K.dtype(a))

print(K.shape(b).eval(session=tf_session))
print(b.eval(session=tf_session))
print(K.dtype(b))

print(K.shape(c).eval(session=tf_session))
print(c.eval(session=tf_session))
print(K.dtype(c))

[1 2 2 3]
[[[[ 1.  2.  3.]
   [ 4.  5.  6.]]

  [[ 7.  8.  9.]
   [10. 11. 12.]]]]
float32
[2 1 3]
[[[1. 2. 3.]]

 [[4. 5. 6.]]]
float32
[1 2 2 3]
[[[[0. 0. 0.]
   [3. 3. 3.]]

  [[3. 3. 3.]
   [6. 6. 6.]]]]
float32

 減法也是自動填充,得到相同的維度。

# 乘法
from keras import backend as K
import numpy as np
a = K.reshape(K.constant(np.arange(1,13,1)), [1,2,2,3])
b = K.reshape(K.constant(np.arange(1,7,1)), [2,1,3])
c=a*b
tf_session = K.get_session()
print(K.shape(a).eval(session=tf_session))
print(a.eval(session=tf_session))
print(K.dtype(a))

print(K.shape(b).eval(session=tf_session))
print(b.eval(session=tf_session))
print(K.dtype(b))

print(K.shape(c).eval(session=tf_session))
print(c.eval(session=tf_session))
print(K.dtype(c))

[1 2 2 3]
[[[[ 1.  2.  3.]
   [ 4.  5.  6.]]

  [[ 7.  8.  9.]
   [10. 11. 12.]]]]
float32
[2 1 3]
[[[1. 2. 3.]]

 [[4. 5. 6.]]]
float32
[1 2 2 3]
[[[[ 1.  4.  9.]
   [ 4. 10. 18.]]

  [[28. 40. 54.]
   [40. 55. 72.]]]]
float32

 乘法也是自動填充為想同維度。

# 除法
from keras import backend as K
import numpy as np
a = K.reshape(K.constant(np.arange(1,13,1)), [1,2,2,3])
b = K.reshape(K.constant(np.arange(1,7,1)), [2,1,3])
c=a/b
tf_session = K.get_session()
print(K.shape(a).eval(session=tf_session))
print(a.eval(session=tf_session))
print(K.dtype(a))

print(K.shape(b).eval(session=tf_session))
print(b.eval(session=tf_session))
print(K.dtype(b))

print(K.shape(c).eval(session=tf_session))
print(c.eval(session=tf_session))
print(K.dtype(c))

[1 2 2 3]
[[[[ 1.  2.  3.]
   [ 4.  5.  6.]]

  [[ 7.  8.  9.]
   [10. 11. 12.]]]]
float32
[2 1 3]
[[[1. 2. 3.]]

 [[4. 5. 6.]]]
float32
[1 2 2 3]
[[[[1.   1.   1.  ]
   [4.   2.5  2.  ]]

  [[1.75 1.6  1.5 ]
   [2.5  2.2  2.  ]]]]
float32

 除法也是自動填充為相同緯度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM