2017-11-04 9 views
0

conv1d_transposeはTensorflowの安定したバージョンではまだないが、実装は、私は1次元デコンボリューションネットワークを作成したいon githubTensorflowでconv1d_transposeを使用するには?

利用可能です。入力の形状は[-1, 256, 16]であり、出力は[-1,1024,8]である必要があります。カーネルのサイズは5で、ストライドが、私はこの機能を1D畳み込み層を構築しようとした4

です:

(output_depth, input_depth) = (8, 16) 
    kernel_width = 7 
    f_shape = [kernel_width, output_depth, input_depth] 
    layer_1_filter = tf.Variable(tf.random_normal(f_shape)) 

    layer_1 = tf_exp.conv1d_transpose(
     x, 
     layer_1_filter, 
     [-1,1024,8], 
     stride=4, padding="VALID" 
    ) 

layer_1の形状はTensorShape([Dimension(None), Dimension(None), Dimension(None)])ですが、それがあるべき[-1,1024,8]

何が悪いですか? Tensorflowで1Dデコンボリューションをどのように実装することが可能ですか?

答えて

0

プルリクエストはこの時点で公開されているため、APIと動作が変更される可能性があります。 1はconv1d_transposeから期待するかもしれないいくつかの機能がサポートされていません、-1を渡すことはできません

  • output_shapeは静的に知られるようにバッチサイズを必要とします。一方、出力形状は動的である(これはNone次元を説明する)。

また、kernel_width=7は、256ではなく、in_width=255と予想されます。 kernel_width4より小さくしてin_width=256と一致させる必要があります。結果は次のとおりです。

x = tf.placeholder(shape=[None, 256, 16], dtype=tf.float32) 
filter = tf.Variable(tf.random_normal([3, 8, 16])) # [kernel_width, output_depth, input_depth] 
out = conv1d_transpose(x, filter, output_shape=[100, 1024, 8], stride=4, padding="VALID") 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    result = sess.run(out, feed_dict={x: np.zeros([100, 256, 16])}) 
    print(result.shape) # prints (100, 1024, 8) 
関連する問題