我正在尝试修改可用的keras示例pretrained_word_embeddings here并且我遇到了以下问题:如果我将 MAX_SEQUENCE_LENGTH
varibae减少为例如 95
值,我会收到以下错误:
回溯(最近一次调用最后一次):文件“C:\ Program Files \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ common_shapes.py”,第670行,_call_cpp_shape_fn_impl状态)文件“C:\ Program Files \ anaconda3 \ lib \ contextlib.py“,第66行,在exit next(self.gen)文件”C:\ Program Files \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ errors_impl.py“,第469行,in raise_exception_on_not_ok_status pywrap_tensorflow.TF_GetCode(status))tensorflow.python.framework.errors_impl.InvalidArgumentError:通过输入形状为'Conv2D_2'(op:'Conv2D')从2减去5引起的负维度大小:[?,2,1,128 ],[5,1,128,128] .
我需要更改它以防万一我需要使用像推文这样的小消息 . 我使用Tensorflow后端 .
请帮我澄清1) MAX_SEQUENCE_LENGTH
有什么问题? 2) Conv2D_2
在跟踪中的原因是什么,而不是我在模型中使用的 Conv1D
.
1 回答
MAX_SEQUENCE_LENGTH=95
时,让我们通过网络定义并分析图层输出的形状:正如您可能看到的问题出现在最后一个
Conv1D
图层,其中没有足够的维度来应用带有valid
边框模式的卷积 . 有很多方法可以解决这个问题 . 最简单的方法是裁剪最后一个Conv-MaxPool
二重奏并将网络定义更改为:当然 - 有更多的方法可以做到这一点(比如玩游泳池大小等) .
使用
Conv2D
背后的原因来自于TensorFlow
后端的情况Conv1D
由二维卷积实现,其中一个维度被挤压为具有1
的大小 .