Keras:如何乘法()?
Keras: How to Multiply()?
TensorFlow 2.0 RC1
import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Multiply
import numpy as np
预期输出:
Multiply()([np.array([1,2,3,4,4,4]).reshape(2,3), np.array([1,0])])
问题:
input_1 = Input(shape=(None,3))
mask_1 = Input(shape=(None,))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
net.predict([np.array([1,2,3,4,4,4]).reshape(1,2,3), np.array([1,0]).reshape(1,2)]) # 1 = batch size
如何解决这个问题?
将最后一行代码中的第二个数组重塑为np.array([1,0]).reshape(-1)
net.predict([np.array([1,2,3,4,4,4]).reshape(1,2,3), np.array([1,0]).reshape(-1)]) # 1 = batch size
这取决于输入形状的指定方式。在 Multiply() 示例(逐元素乘法)中,批量大小为 2,输入的特征大小为 3,掩码的特征大小为 1。所以,在Keras中指定输入形状时,只需要指定特征尺寸即可。
input_1 = Input(shape=(3,))
mask_1 = Input(shape=(1,))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
output = net.predict([np.array([1,2,3,4,4,4]).reshape(2,3), np.array([1,0])])
print(output)
[[1. 2. 3.]
[0。 0. 0.]]
维数应匹配,方法是将第二个输入的输入形状修改为 (None, 1)
并向 [1, 0]
数组添加一个额外维
import numpy as np
from tensorflow.keras.layers import Multiply
from tensorflow.keras import Model, Input
input_1 = Input(shape=(2,3))
mask_1 = Input(shape=(2,1))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
net.summary()
print(net.predict([np.array([1,2,3,4,4,4]).reshape((1,2,3)), np.array([1,0]).reshape((1,2,1))]))
TensorFlow 2.0 RC1
import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Multiply
import numpy as np
预期输出:
Multiply()([np.array([1,2,3,4,4,4]).reshape(2,3), np.array([1,0])])
问题:
input_1 = Input(shape=(None,3))
mask_1 = Input(shape=(None,))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
net.predict([np.array([1,2,3,4,4,4]).reshape(1,2,3), np.array([1,0]).reshape(1,2)]) # 1 = batch size
如何解决这个问题?
将最后一行代码中的第二个数组重塑为np.array([1,0]).reshape(-1)
net.predict([np.array([1,2,3,4,4,4]).reshape(1,2,3), np.array([1,0]).reshape(-1)]) # 1 = batch size
这取决于输入形状的指定方式。在 Multiply() 示例(逐元素乘法)中,批量大小为 2,输入的特征大小为 3,掩码的特征大小为 1。所以,在Keras中指定输入形状时,只需要指定特征尺寸即可。
input_1 = Input(shape=(3,))
mask_1 = Input(shape=(1,))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
output = net.predict([np.array([1,2,3,4,4,4]).reshape(2,3), np.array([1,0])])
print(output)
[[1. 2. 3.] [0。 0. 0.]]
维数应匹配,方法是将第二个输入的输入形状修改为 (None, 1)
并向 [1, 0]
数组添加一个额外维
import numpy as np
from tensorflow.keras.layers import Multiply
from tensorflow.keras import Model, Input
input_1 = Input(shape=(2,3))
mask_1 = Input(shape=(2,1))
net = Multiply()([input_1, mask_1])
net = Model(inputs=[input_1, mask_1], outputs=net)
net.summary()
print(net.predict([np.array([1,2,3,4,4,4]).reshape((1,2,3)), np.array([1,0]).reshape((1,2,1))]))