我正在尝试从可用的here代码中实现无监督方面提取的代码。
Link到论文
在ml_layers.py中实现Attention类时,在行的调用函数中出现错误
y = K.repeat_elements(y, self.steps, axis=1)
该功能的完整代码如下:
def call(self, input_tensor, mask=None):
x = input_tensor[0]
y = input_tensor[1]
mask = mask[0]
y = K.transpose(K.dot(self.W, K.transpose(y)))
y = K.expand_dims(y, axis=-2)
y = K.repeat_elements(y, self.steps, axis=1)
eij = K.sum(x*y, axis=-1)
if self.bias:
b = K.repeat_elements(self.b, self.steps, axis=0)
eij += b
eij = K.tanh(eij)
a = K.exp(eij)
if mask is not None:
a *= K.cast(mask, K.floatx())
a /= K.cast(K.sum(a, axis=1, keepdims=True) + K.epsilon(), K.floatx())
return a
错误如下 追溯(最近一次通话):
文件“”,第1行,在 模型= create_model(ortho_reg,neg_size,emb_dim,aspect_size,emb_path,maxlen,vocab)
在create_model中,文件“ /home/fractaluser/Projects/workspace/UnsupervisedAspectExtraction/code/model.py”第32行 att_weights = Attention(name ='att_weights')([e_w,y_s])
文件“ /home/fractaluser/anaconda3/envs/venv_keras/lib/python3.5/site-packages/keras/engine/base_layer.py”,第457行,位于调用中 输出= self.call(输入,** kwargs)
文件“ /home/fractaluser/Projects/workspace/UnsupervisedAspectExtraction/code/my_layers.py”,第58行,正在调用 y = K.repeat_elements(y,self.steps,axis = 1)
文件“ /home/fractaluser/anaconda3/envs/venv_keras/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py”,第2093行,在repeat_elements中 返回串联(x_rep,轴)
文件“ /home/fractaluser/anaconda3/envs/venv_keras/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py”,行1954,串联 返回tf.sparse_concat(轴,张量)
文件“ /home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/util/deprecation.py”,行488,在new_func中 返回func(* args,** kwargs)
文件“ /home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/ops/sparse_ops.py”,行316,在sparse_concat中 gen_sparse_ops.sparse_concat(inds,vals,shapes,axis,name = name))
文件“ /home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/ops/gen_sparse_ops.py”,行911,在sparse_concat中 concat_dim = concat_dim,名称=名称)
_apply_op_helper中的第570行“ /home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py” (输入名称,操作类型名称,len(值),num_attr.minimum))
ValueError:将自变量'indices'列出到'SparseConcat'Op,其长度0小于最小长度2。
在Internet上找不到任何解决方案。请帮助
答案 0 :(得分:-1)
我曾经有这个问题
AttributeError: module 'keras.backend' has no attribute 'image_dim_ordering'
,
所以我必须
修改
K.image_dim_ordering() == 'th'('tf') ==> K.image_data_format() == 'channels_first'(channels_last)
在那之后,我遇到了与您相同的问题。但是我的问题是仍然有一些地方不正确。之后,我修改所有地方。问题解决了。 希望对您有所帮助。