1

我正在使用自定义softmax功能。我正在尝试使用张量x的形状作为零的新张量的形状元素。它不能完成,因为它不是 int。

def custom_softmax(x):
    sh = K.shape(x)
    ...      
    xc = K.zeros((sh[0] * 16 * 16, 1))
    ...

我尝试的下一个选项是评估张量,它应该有效但无效。

def custom_softmax(x):
    sh = K.shape(x)
    sess = K.get_session()
    ...      
    xc = K.zeros((sh[0].eval(session=sess) * 16 * 16, 1))
    ...

它给了我错误

tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'image_part_input' with dtype float

这是完全无法理解的,因为它引用了不正确的主网络输入。当我将形状的值硬编码在K.zeros. 还有其他解决方案吗?

4

1 回答 1

0

我解决了我的问题,Tensorflow而不是Keras@Yu-Yang 建议的。K.zeros我使用tf.fill了可以接受张量作为形状的函数,而不是函数。

def custom_softmax(x):
    sh = K.shape(x)
    ...      
    xc = tf.fill(tf.stack([sh[0] * 16 * 16, 1]), 0.0)
    ...
于 2017-08-03T06:15:44.247 回答