简体   繁体   English

在某些情况下,tf.matmul 是否等同于 Dense 层在 tensorflow 中所做的操作?

[英]is tf.matmul equivalent to the operations the Dense layer makes in tensorflow in some cases?

I have created this model我创建了这个模型

num_items = 1250
num_users = 1453
emb_size = 64

input_userID = Input(shape=[1], name='user_ID')
input_itemID = Input(shape=[1], name='item_ID')

user_emb_GMF = Embedding(num_users, emb_size, name='user_emb_GMF')(input_userID)
item_emb_GMF = Embedding(num_items, emb_size, name='item_emb_GMF')(input_itemID)

interraction_map = tf.expand_dims(Dot(axes=1)([user_emb_GMF,item_emb_GMF]), -1)
print(interraction_map)
conv = Conv2D(32, 2, strides=2, activation='relu', padding="SAME", input_shape=interraction_map.shape[1:], name='conv1')(interraction_map)

for i in range(2,7):#les autres conv layer
    conv = Conv2D(32, 2, strides=2, activation='relu', padding="SAME",name='conv%d'%(i))(conv)

reshaped_conv = Flatten()(conv)
# c'est la que je doit agir et ajouter creer la prédiction


out = Dense(1, name='output' )(reshaped_conv)

#out = Dense(1,activation='sigmoid',name='output')(layer)


oncf_model = Model([input_userID, input_itemID], out)

tf.keras.utils.plot_model(oncf_model, show_shapes=True)

and i want the output layer to be the result of this operation:我希望输出层是这个操作的结果:

output_layer = tf.matmul(reshaped_conv, W) + b

with W is tensor of shape(32,1)(weights) and b is tensor of shape(1) (bias). W 是形状(32,1)(权重)的张量,b 是形状(1)(偏差)的张量。

I wonder if in this particular case the operation done with matmul is equivalent to the one the Dense layer does我想知道在这种特殊情况下,使用 matmul 完成的操作是否等同于 Dense 层所做的操作

out = Dense(1, name='output' )(reshaped_conv)

yes, they are the same... you can test it on your own是的,它们是一样的……你可以自己测试

X = np.random.uniform(0,1, (32,10)).astype('float32')

x = Dense(1)
pred = x(X)

W, b = x.get_weights()

(pred == (tf.matmul(X, W) + b)).numpy().all() # TRUE

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM