# 加法
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
除法也是自動填充為相同緯度