我正在使用自定义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
中硬编码形状值时,网络正常工作。还有其他解决方案吗?
答案 0 :(得分:0)
我根据@Yu-Yang的建议,使用Tensorflow
而非Keras
解决了我的问题。我使用K.zeros
函数代替tf.fill
函数,可以接受张量作为形状。
def custom_softmax(x):
sh = K.shape(x)
...
xc = tf.fill(tf.stack([sh[0] * 16 * 16, 1]), 0.0)
...