TypeError:(';不是Keras张量:';,Elemwise{add,no#inplace}.0)

TypeError:(';不是Keras张量:';,Elemwise{add,no#inplace}.0),keras,theano,Keras,Theano,我正在使用keras与GRU一起运行attention layer,以便在python中进行情绪分析,但是,python给了我以下错误消息: TypeError:(“不是Keras张量:”,Elemwise{add,no_inplace}.0) 我在网站上搜索,但这个问题仍然无法解决。这是我的密码: os.environ['KERAS\u BACKEND']='theano' #注意GRU网络 层(层)的类别: 定义初始(自我,**kwargs): self.init=initializers.

我正在使用keras与GRU一起运行attention layer,以便在python中进行情绪分析,但是,python给了我以下错误消息:

TypeError:(“不是Keras张量:”,Elemwise{add,no_inplace}.0)

我在网站上搜索,但这个问题仍然无法解决。这是我的密码:

os.environ['KERAS\u BACKEND']='theano'
#注意GRU网络
层(层)的类别:
定义初始(自我,**kwargs):
self.init=initializers.get('normal')
#self.input_spec=[InputSpec(ndim=3)]
超级(AttLayer,self)。\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu(**kwargs)
def构建(自我,输入_形状):
断言len(输入_形)==3
#self.W=self.init((输入_形[-1],1))
self.W=self.init((输入_形[-1],))
#self.input\u spec=[InputSpec(shape=input\u shape)]
self.trainiable_weights=[self.W]
超级(AttLayer,self)。构建(输入U形)#一定要在某处调用它!
def调用(self、x、mask=None):
eij=K.tanh(K.dot(x,self.W))
ai=K.exp(eij)
权重=ai/K.sum(ai,轴=1).dimshuffle(0,'x')
加权输入=x*权重。dimshuffle(0,1,'x')
返回加权输入和(轴=1)
def计算输出形状(自身、输入形状):
返回输入_形[0],输入_形[-1]
def get_idx_from_sent(sent,word_idx_map,max_l=1187,filter_h=3):
"""
将句子转换为索引列表。用零填充。
"""
x=[]
pad=过滤器h-1
对于范围内的i(焊盘):
x、 追加(0)
words=sent.split()
用文字表示:
如果word\u idx\u映射中的单词:
x、 追加(word\u idx\u映射[word])
而len(x)
但是,它被卡住了,下面是错误消息:

回溯(最近一次呼叫最后一次):
文件“C:/Users/ruowe/PycharmProjects/resnet/test1.py”,第101行,在
nb_历元=10,批次尺寸=50)
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\engine\training.py”,第1575行
self.\u make\u train\u function()
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\engine\training.py”,第960行,在“make\u train”函数中
损失=自身总损失)
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\legacy\interfaces.py”,第87行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\optimizers.py”,第427行,在get\U更新中
ms=[K.zeros(K.int_shape(p),dtype=K.dtype(p))表示参数中的p]
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\optimizers.py”,第427行,在
ms=[K.zeros(K.int_shape(p),dtype=K.dtype(p))表示参数中的p]
文件“C:\Users\ruowe\Anaconda3\lib\site packages\keras\backend\theano\u backend.py”,第275行,呈整数形状
raise TypeError('不是Keras张量:',x)
TypeError:(‘不是Keras张量:’,Elemwise{add,no_inplace}.0)

也有同样的问题,在这里找到了答案:

简短回答-这是Keras-ver的一个变化。二,

将生成功能更改为:

def build(self, input_shape):
    assert len(input_shape)==3
    self.W = self.add_weight(name='kernel', 
                                  shape=(input_shape[-1],),
                                  initializer='normal',
                                  trainable=True)
    super(AttLayer, self).build(input_shape)  

同样的问题,在这里找到了答案:

简短回答-这是Keras-ver的一个变化。二,

将生成功能更改为:

def build(self, input_shape):
    assert len(input_shape)==3
    self.W = self.add_weight(name='kernel', 
                                  shape=(input_shape[-1],),
                                  initializer='normal',
                                  trainable=True)
    super(AttLayer, self).build(input_shape)  

听起来错误就在这行:
ms=[K.zeros(K.int_-shape(p),dtype=K.dtype(p))表示参数中的p]
,其中
p
应该是keras张量,但不是。--但是你的问题中没有显示这一行。听起来错误就在这一行:
ms=[K.zeros(K.int_-shape(p),dtype=K.dtype(p))表示参数中的p]
,其中
p
应该是keras张量,但不是。--但是这句话在你的问题中没有显示出来。非常感谢!它起作用了!这个麻烦让我几乎半个学期都感到困惑,我几乎放弃了这个方法……非常感谢!它起作用了!这个麻烦让我几乎半学期都感到困惑,我几乎放弃了这个方法。。。。