Sta*_*ess 6 python machine-learning neural-network deep-learning keras
在新的API更改下,如何在Keras中逐层实现层的乘法?在旧的API下,我会尝试这样的事情:
merge([dense_all, dense_att], output_shape=10, mode='mul')
Run Code Online (Sandbox Code Playgroud)
我试过这个(MWE):
from keras.models import Model
from keras.layers import Input, Dense, Multiply
def sample_model():
model_in = Input(shape=(10,))
dense_all = Dense(10,)(model_in)
dense_att = Dense(10, activation='softmax')(model_in)
att_mull = Multiply([dense_all, dense_att]) #merge([dense_all, dense_att], output_shape=10, mode='mul')
model_out = Dense(10, activation="sigmoid")(att_mull)
return 0
if __name__ == '__main__':
sample_model()
Run Code Online (Sandbox Code Playgroud)
完整跟踪:
Using TensorFlow backend.
Traceback (most recent call last):
File "testJan17.py", line 13, in <module>
sample_model()
File "testJan17.py", line 8, in sample_model
att_mull = Multiply([dense_all, dense_att]) #merge([dense_all, dense_att], output_shape=10, mode='mul')
TypeError: __init__() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试实现tensorflow的元素乘法函数.当然,结果不是Layer()实例,所以它不起作用.这是后人的尝试:
def new_multiply(inputs): #assume two only - bad practice, but for illustration...
return tf.multiply(inputs[0], inputs[1])
def sample_model():
model_in = Input(shape=(10,))
dense_all = Dense(10,)(model_in)
dense_att = Dense(10, activation='softmax')(model_in) #which interactions are important?
new_mult = new_multiply([dense_all, dense_att])
model_out = Dense(10, activation="sigmoid")(new_mult)
model = Model(inputs=model_in, outputs=model_out)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
return model
Run Code Online (Sandbox Code Playgroud)
Mar*_*jko 11
与keras> 2.0:
from keras.layers import multiply
output = multiply([dense_all, dense_att])
Run Code Online (Sandbox Code Playgroud)
在功能性API下,您只需使用multiply功能,注意小写的“ m”。如您所见,Multiply类是一层,旨在与顺序API一起使用。
有关更多信息,请参见https://keras.io/layers/merge/#multiply_1
小智 5
您需要在前面再添加一个开/关括号。
from keras.layers import Multiply
att_mull = Multiply()([dense_all, dense_att])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10105 次 |
| 最近记录: |