首页 > 解决方案 > 将输入与 keras 中的常量向量连接起来。如何定义batch_size

问题描述

作为这个问题的后续行动:

将输入与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 [未明确],以便可以连接符号层和常量层,以便将它们用作输入层。

标签: kerasconcatenationkeras-2

解决方案


要获得动态批量大小:

batch_size = K.shape(your_tensor)[0]

K.repeat_elements()Tensor接受rep. 但是,您可以使用以下方法产生相同的结果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)

推荐阅读