【发布时间】:2023-03-19 00:44:01
【问题描述】:
我需要沿固定大小的文本行执行卷积。所以本质上,一个训练示例的形式是:1*N_FEATURES 其中N_FEATURES 等于 3640(140 个字符编码为 one-hot,所以 40*26=3640)。我试图理解示例here,确切地说:
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')
我们有:[WINDOW_SIZE, 1] 而不是[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')”?
【问题讨论】:
标签: machine-learning tensorflow convolution