维度不同的张量的加减乘除

# 加法
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

 除法也是自动填充为相同纬度

猜你喜欢

转载自www.cnblogs.com/liuxuanhe/p/9228858.html