簡體   English   中英

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

預期 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM