2017-02-21 10 views
1

tf.max_poolは可変サイズをサポートしていないので、sppレイヤーは動作しません。 グラフに長さを入力すると、エラーが発生します。Tensorflowでspp-netを構築するには?

length = tf.placeholder(tf.int32) 
shape=[-1, length,length,32] 
pool = tf.nn.max_pool(output, 
        ksize=[1, np.ceil(shape[1] * 1./l).astype(np.int32), np.ceil(shape[2] * 1./l).astype(np.int32), 1], 
        strides=[1, np.floor(shape[1] * 1./l + 1).astype(np.int32), np.floor(shape[2] * 1./l + 1), 1], 
          padding='SAME') 

はTypeError:予想INT32は、代わりにタイプ 'フロート' が1.0を得ました。

あなたはそれをどう対処するか考えていますか?

答えて

1

stridesパラメータで、3番目の値をintegerに変更します。 すなわち

np.floor(shape[2] * 1./l + 1)

np.floor(shape[2] * 1./l + 1).astype(np.int32)への完全 strideオプション:

strides=[1, np.floor(shape[1] * 1./l + 1).astype(np.int32), 
      np.floor(shape[2] * 1./l + 1).astype(np.int32), 1], 

これはあなたのお役に立てば幸いです。

+0

あなたの答えに感謝します。あなたが把握していることは問題です。 実際のエラーは、次の点で発生します。 ファイル "F:/MyProgram/Python/DL/SppNet.py"、行343、SgdSppNet ksize = [1、np.ceil(shape [1] * 1)。/l).astype(np.int32)、 長さはtf.tensorであり定数ではありませんが、ts.nn.max_poolはサポート変数にksizeまたはstridesを指定していません。 – kingwen

関連する問題