ValueError:输入0与层lstm_14不兼容:预期ndim = 3,找到的ndim = 2 - python

我正在建立一个cnn_rnn网络进行图像分类。我在jupyter笔记本中运行以下python代码时遇到错误。

     # model
     model1 = Sequential()
     # first convolutional layer
     model1.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape(160, 120, 3)))
     # second convolutional layer
     model1.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
     #Adding a pooling Layer
     model1.add(MaxPooling2D(pool_size=(3, 3)))
     #Adding dropouts
     model1.add(Dropout(0.25))
     # flatten and put a fully connected layer
     model1.add(Flatten())
     model1.add(Dense(32, activation='relu')) # fully connected

     #Adding RNN N/W
     model1.add(LSTM(32, return_sequences=True))
     model1.add(TimeDistributed(Dense(5, activation='softmax')))

我还尝试将input_shape =(160,120,3)添加为LSTM函数的参数,但无济于事。请帮忙!

P.S:我也尝试使用GRU而不是LSTM,但是遇到了同样的错误。

更新:请注意model.summary()结果
enter image description here

参考方案

您的错误是由于在LSTM层之前使用了Flatten和Dense。

LSTM层要求输入的形状为(批量大小x长度x特征深度0)(或某些变形),而展平将Conv2D输出从(B x H x W x F)更改为(B x W * F * H)如果有道理。如果要使用此体系结构,建议您使用Reshape层来展平所需的尺寸,并在LSTM层之前使用内核大小为1的Conv1D(与完全连接的层相同)。

或者,如果您想使用此确切的代码,请将其添加到LSTM层之前,它应该可以工作:

  model1.add(Reshape(target_shape =(1,54 * 40,32))

由于pool_size为(3,3),因此分别为54和40。

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python:ConfigParser对象,然后再阅读一次 - python

场景:我有一个配置文件,其中包含要执行的自动化测试的列表。这些测试是长期循环执行的。   配置文件的设计方式使ConfigParser可以读取它。由于有两个三个参数,因此我需要通过每个测试。现在,此配置文件由script(s1)调用,并且按照配置文件中的列表执行测试。Script(s1)第一次读取配置,并且在每次测试完成后都会执行。阅读两次的要求:由于可能会…

训练时的scikit-learn:RandomForestRegressor:ValueError - python

我有一个包含我的标签的pandas系列s和一个包含我的数据的pandas DataFrame df。我想使用sklearn RandomForestRegressor生成标签的预测。model = RandomForestRegressor(n_estimators=1000, max_depth= 30 , random_state=31415) mode…