【问题标题】:Keras repeat elements throwing ValueError List argument 'indices' to 'SparseConcat' Op with length 0 shorter than minimum length 2Keras重复元素将ValueError List参数'indices'抛出到'SparseConcat'Op,长度0小于最小长度2
【发布时间】:2019-08-20 10:05:35
【问题描述】:

我正在尝试从可用的代码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

错误如下 Traceback(最近一次调用最后一次):

文件“”,第 1 行,在 model = create_model(ortho_reg, neg_size, emb_dim, aspect_size, emb_path, maxlen, vocab)

文件“/home/fractaluser/Projects/workspace/UnsupervisedAspectExtraction/code/model.py”,第 32 行,在 create_model 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 行 output = self.call(inputs, **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 行,串联 return tf.sparse_concat(axis, tensors)

文件“/home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/util/deprecation.py”,第 488 行,在 new_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, name=name)

文件“/home/fractaluser/.local/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py”,第 570 行,在 _apply_op_helper (input_name, op_type_name, len(values), num_attr.minimum))

ValueError: 将参数 'indices' 列出到 'SparseConcat' Op 的长度 0 比最小长度 2 短。

在互联网上找不到任何解决方案。请帮忙

【问题讨论】:

  • 不是说self.steps是0吗?

标签: tensorflow keras unsupervised-learning aspect attention-model


【解决方案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)

在那之后,我遇到了和你一样的问题。但我的问题是仍有一些地方不正确。在我修改所有地方之后。问题消失了。 我希望这可以帮助你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 2016-06-16
    • 1970-01-01
    • 2014-08-26
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多