【问题标题】:a problem and how to deal with batch while creating a Model一个问题以及如何在创建模型时处理批处理
【发布时间】:2021-07-14 03:28:15
【问题描述】:

from keras_multi_head import MultiHeadAttention
import keras
from keras.layers import Dense,Input,Multiply
from keras import backend as K
from keras.layers.core import Dropout, Layer
from keras.models import Sequential,Model
import numpy as np
import tensorflow as tf
from self_attention_layer import Encoder



## multi source attention
class Multi_source_attention(keras.Model):

    def __init__(self,read_n,embed_dim,num_heads,ff_dim,num_layers):
        super().__init__()
        self.read_n = read_n
        self.embed_dim = embed_dim
        self.num_heads = num_heads
        self.ff_dim = ff_dim
        self.num_layers = num_layers
        self.get_weights = Dense(49, activation = 'relu',name = "get_weights")
    
        
    def compute_output_shape(self,input_shape):
        #([batch,7,7,256],[1,256])
        return input_shape


    def call(self,inputs):
        ## weights matrix

        #(1,49)
        weights_res = self.get_weights(inputs[1])
        #(1,7,7)
        weights = tf.reshape(weights_res,(1,7,7))
        #(256,7,7)
        weights = tf.tile(weights,[256,1,1])
      
        ## img from mobilenet
        img=tf.reshape(inputs[0],[-1,7,7])


        
        inter_res = tf.multiply(img,weights)
        inter_res = tf.reshape(inter_res, (-1,256,49))
        print(inter_res.shape)
        att = Encoder(self.embed_dim,self.num_heads,self.ff_dim,self.num_layers)(inter_res)

        return att

我尝试构建一个网络来实现图像中圈出的部分。 LSTM **(1,256) 和之前 Mobilenet (batch,7,7,256) 的输出。然后将 LSTM 的输出转换为 (7,7) 形式的权重矩阵。

但问题是来自mobilenet的输出的输入形状有一个属性batch。我不知道如何处理 "batch" 或如何设置参数来约束批处理?

有人可以给我小费吗?

如果我删除函数 compute_output_shape(),则会出现一个错误 unimplementerror。 keras 官方文档告诉我,我不需要覆盖该函数。 有人可以解释一下吗?

【问题讨论】:

    标签: python tensorflow keras keras-layer tf.keras


    【解决方案1】:

    Compute_output_shape 对于自定义层至关重要。如果调用函数 summary(),则会生成相应的 Graph,其中输入和输出形状显示在每一层中。 compute_output_shape 负责输出形状。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2017-05-02
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      相关资源
      最近更新 更多