【问题标题】:Concatenate input with constant vector in keras. how one define the batch_size将输入与 keras 中的常量向量连接起来。如何定义batch_size
【发布时间】:2018-10-19 15:20:24
【问题描述】:

作为这个问题的后续:

Concatenate input with constant vector in keras

我正在尝试使用建议的解决方案:

constant=K.variable(np.ones((1,10, 5)))
constant = K.repeat_elements(constant,rep=batch_size,axis=0)

并得到以下错误:

NameError: name 'batch_size' is not defined

我看不到如何在 keras 模型中定义 batch_size [未明确],以便可以连接符号层和常量层,以便将它们用作输入层。

【问题讨论】:

标签: keras concatenation keras-2


【解决方案1】:

获取动态批量大小:

batch_size = K.shape(your_tensor)[0]

K.repeat_elements() 不接受Tensorrep 值。但是,您可以使用K.tile() 产生相同的结果:

from keras.models import *
from keras import backend as K
import numpy as np

a = Input(shape=(10, 5))
batch_size = K.shape(a)[0]
constant = K.variable(np.ones((1,10, 5)))
constant = K.tile(constant, (batch_size, 1, 1))
print(constant)
# Tensor("Tile:0", shape=(?, 10, 5), dtype=float32)

【讨论】:

  • 但是现在有一个问题:AttributeError: 'Tensor' object has no attribute '_keras_history' 在调用模型时。这与以下内容相同:github.com/keras-team/keras/issues/7362 没有明确的解决方案....
  • 在没有更多信息的情况下很难解决你的问题(你想用这段代码做什么?)。我建议你在另一个question 上看看,如果没有帮助,请打开一个新线程。
  • 谢谢!有了这个帮助和其他线程,我得到了它的工作。但是我想补充一点,在此解决方案之后,需要添加一个新的输入层: F = Input(tensor=k_constant) 并在模型中定义它 model = Model(inputs=[X,F], outputs=outputs) 但是model.fit(X,... 中不需要这样的定义
  • 这个答案也可以为寻求类似解决方案的其他人提供帮助:stackoverflow.com/a/46466275/220338
  • 我创建了一个类似的问题,主要是因为我无法将此答案映射到我的问题,可能是因为我没有经验。如果您能看看我的问题,我将不胜感激。 stackoverflow.com/questions/58158620/…
猜你喜欢
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多