固定サイズのテキスト行に沿って畳み込みを実行する必要があります。したがって、本質的には、トレーニングの例は1*N_FEATURES
の形式です。ここで、N_FEATURES
は3640です(140文字はワンホットとしてエンコードされているため、40 * 26 = 3640)。私は正確には、例hereの意味を理解しようとしています:Tensorflowでは4dテンソルの意味は何ですか?
def my_conv_model(X, y):
X = tf.reshape(X, [-1, N_FEATURES, 1, 1]) # to form a 4d tensor of shape batch_size x n_features x 1 x 1
features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID') # this will give you sliding window of WINDOW_SIZE x 1 convolution.
pool = tf.squeeze(tf.reduce_max(features, 1), squeeze_dims=[1])
return return skflow.models.logistic_regression(pool, y)
このラインでは、なぜ私は理解していない:
features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID')
我々が持っている:なく[1, WINDOW_SIZE]
を?私の知る限り理解して以来 、コンボリューションは以下のように実行する必要があります。
training example: '001010101000100101'
sliding window: |---|
|---|
|---|
というように、サイズ[1、WINDOW_SIZE]の各ウィンドウは、その高さが1であることから、幅が3である。しかしなぜ例は "features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID'
"と書かれています)?
「拡張された」フォームの3ワイドの1ハイが形状[1,1,3,1]になることは間違いありませんか?また、どのような次元が重要であるかをどのように判断しますか? – Oleksandra
はい、[1、1、3、1]は私がAPIを読んでいる方法です。 「有意義」とは、実際には専門用語ではありません。制限が1のディメンションは単にプレースホルダです。同様に、カラー画像は、RGB成分のどこかに「重要でない」次元3を有する。 – Prune