[英]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
預期 output:
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))]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.