Python Tensorflow:过滤器不得大于输入值

Python Tensorflow:过滤器不得大于输入值,python,machine-learning,tensorflow,deep-learning,convolution,Python,Machine Learning,Tensorflow,Deep Learning,Convolution,我想沿着[n*1]形状的训练样本执行卷积,并应用零填充。到目前为止,没有结果 我正在建立一个角色级别的CNN(想法取自) 我的数据基本上是tweets,最初每个长度为140。 我过滤所有非字母字符(将其替换为空字符串“”),将所有字母字符转换为小写并作为一个热编码器编码 我得到的数据是n*m,其中n是训练示例的数量,m=140*26=3640,因为每个字母字符都被编码为一个热向量 现在,我正在尝试执行卷积运算,这就是我遇到的问题。基本上: 1) 我试着在一条tweet上加上零。 2) 然后我想做

我想沿着[n*1]形状的训练样本执行卷积,并应用零填充。到目前为止,没有结果

我正在建立一个角色级别的CNN(想法取自)

我的数据基本上是tweets,最初每个长度为140。 我过滤所有非字母字符(将其替换为空字符串“”),将所有字母字符转换为小写并作为一个热编码器编码

我得到的数据是n*m,其中n是训练示例的数量,m=140*26=3640,因为每个字母字符都被编码为一个热向量

现在,我正在尝试执行卷积运算,这就是我遇到的问题。基本上: 1) 我试着在一条tweet上加上零。 2) 然后我想做的是沿着tweet使用3*3的过滤器执行卷积,我希望它的大小是3642*3,其中填充后的宽度=3642,高度=3

F = 3 # filter size
S = 1 # stride
P = 1 # zero-pading
MAX_DOCUMENT_LENGTH = 3640
IMAGE_WIDTH = MAX_DOCUMENT_LENGTH
IMAGE_HEIGHT = 1
N_FILTERS = 20
FILTER_SHAPE1 = F
BATCH_SIZE = 257

def conv_model(X, y):
    X = tf.cast(X, tf.float32)
    y = tf.cast(y, tf.float32)
    # reshape X to 4d tensor with 2nd and 3rd dimensions being image width and height
    # final dimension being the number of color channels
    X = tf.reshape(X, [-1, IMAGE_WIDTH, IMAGE_HEIGHT, 1])
   # first conv layer will compute N_FILTERS features for each FxF patch
    with tf.variable_scope('conv_layer1'):
            h_conv1 = tf.contrib.layers.conv2d(inputs=X,num_outputs=N_FILTERS, 
                                  kernel_size=[3,3], padding='VALID')
我得到错误:
ValueError:Filter不能大于输入:Filter:(3,3)input:(3640,1)

为什么不应用零填充?至少,它的应用结果不起作用

因此,我将过滤器大小更改为
[3,1]
,并调用:

h_conv1 = tf.contrib.layers.conv2d(inputs=X, num_outputs=N_FILTERS, kernel_size=[3,1], padding='VALID')
我不明白这个错误

有人能解释一下发生了什么事吗?

另外,为什么我们需要将输入整形为X=tf。整形(X,[-1,图像宽度,图像高度,1])

为什么不应用零填充

在conv2d中使用
padding='SAME'
进行零填充

有人能解释一下发生了什么事吗

在“平面”图像的情况下,不能使用3x3过滤器。要使用3x3过滤器,输入的宽度和高度都应大于3

另外,为什么我们需要将输入整形为X=tf, 图像宽度,图像高度,1])

单个图像的形状为[宽度、高度、通道数]。额外尺寸表示小批量尺寸-1只保留总大小

为什么不应用零填充

在conv2d中使用
padding='SAME'
进行零填充

有人能解释一下发生了什么事吗

在“平面”图像的情况下,不能使用3x3过滤器。要使用3x3过滤器,输入的宽度和高度都应大于3

另外,为什么我们需要将输入整形为X=tf, 图像宽度,图像高度,1])

单个图像的形状为[宽度、高度、通道数]。额外尺寸表示小批量尺寸-1只保留总大小