2017-09-26 19 views
1

この関数に似ている(例えば、最近隣を使って)補間することによって、(None、2、7、512)から(None、2、7、512)のサイズのテンソルTensorflowで入手可能です。Kerasのテンソルのサイズを変更(補間)する方法は?

これを行う方法はありますか?

は、私が直接Tensorflow機能tf.image.resize_nearest_neighborを使用して、次のKeras層へのテンソルを渡ししようとしたが、次の層と、このエラーがスローされました:私は、これはいくつかの属性が原因であると考えてい

AttributeError: 'Tensor' object has no attribute '_keras_history'

をTensorflowテンソルには欠けています。これは、層がKerasテンソルを渡すことを期待しているので意味があります。

+0

'*(p-1)+ *(p + 1)' – ikegami

答えて

2

私は1つの要素を追加し、補間を新しいラムダ層として実装するために、繰り返しを使用します。私はケラスにこれのための既存の層があるとは思わない。

2

驚くべきことに、(xtof54によって指摘されているように)テンソルの補間を行うケラスには、驚くべきことに既存のレイヤー/機能はありません。だから、ラムダレイヤーを使って実装しました。うまくいきました。

def resize_like(input_tensor, ref_tensor): # resizes input tensor wrt. ref_tensor 
    H, W = ref_tensor.get_shape()[1], ref.get_shape()[2] 
    return tf.image.resize_nearest_neighbor(inputs, [H.value, W.value]) 

resized_tensor = Lambda(resize_like, arguments={'ref_tensor':ref_tensor})(input_tensor) 

問題は、最初の場所で、不足している(kerasテンソルのために必要な)いくつかの追加属性として、Keras層でtensorflowから直接テンソルの使用によるものでした。さらに、ラムダ層は非常に使いやすいですが、kerasがケア層のテンソルフローからテンソルを(将来的に)使用できるようにするのが本当に便利です。

+0

右は、リピートレイヤーが不要で、ラムダ内で行うことができます。 – xtof54

関連する問題