のための理解のフィルタとストライド形状が、私はデニーブリッツのtutorialTensorFlow
でCNNs
を使用してテキスト分類上の見直しをしています。フィルター領域とストライド形状は、イメージ領域では完璧な意味を持ちます。しかし、テキストに関して言えば、ストライドとフィルターの形状を正しく定義する方法は混乱しています。 max_sentence_length x embedding_size
TensorFlow - CNNのテキスト分類
フィルタ
の単一チャネル行列は私filter_shapeが[3, 50, 1, 16]
であると仮定されるself.embedded_chars_expanded
の形状は、各バッチのメンバーを意味する[batch_size, max_sentence_length, embedding_size, 1]
ある
# Create a convolution + maxpool layer for each filter size
pooled_outputs = []
for i, filter_size in enumerate(filter_sizes):
with tf.name_scope("conv-maxpool-%s" % filter_size):
# Convolution Layer
filter_shape = [filter_size, embedding_size, 1, num_filters]
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b")
conv = tf.nn.conv2d(
self.embedded_chars_expanded,
W,
strides=[1, 1, 1, 1],
padding="VALID",
name="conv")
# Apply nonlinearity
h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")
# Maxpooling over the outputs
pooled = tf.nn.max_pool(
h,
ksize=[1, sequence_length - filter_size + 1, 1, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
pooled_outputs.append(pooled)
:デニーのコードから次の二つの層を考えます。これは、フィルタが次元50
を持つ時刻に3
の単語ベクトル上をスライドするため、これを解釈します。これはテキストなので、は(3
とは対照的に)RGB
の1つの入力チャンネルに対応します。最後に、16
はに16
のフィルタを含めることを意味します。
これを正しく解釈しましたか?
ストライド
同様に、CONVとプーリング層の両方におけるストライド形状は、[1, 1, 1, 1]
として定義されます。
この形状の寸法は、の寸法に対応していますか?
もしそうなら、これが私が混乱している理由です。単語ベクトル表現の性質は、ストライドの長さが[1, embedding_size, 1, 1]
であることを意味すると思われます。つまり、各フィルタの1つのチャネルで、ウィンドウを1ワードずつフルワードずつ移動したいということです。
ありがとうございます。 「埋め込み次元のフィルタサイズが入力を完全にカバーしているので」をクリックするとクリックされました。 –