tensorflow - 在神经网络中使用卷积层
问题描述
我正在尝试在 Keras 上的神经网络中使用 Conv1D 层作为输入层,我理解它是一个时间卷积层。我的理解是它接受输入,并使用内核大小(具有一组特征)来创建一个新的卷积层。我的训练数据是一个长度为 231 的长热编码张量。我很难理解 Conv1D 层的输入是如何/什么?
我x_train.shape([1])
的是231。
当我使用:
n_cols = x_train.shape([1])
model.add(Conv1D(128, 11, activation = 'relu', input_shape = (n_cols,)))
(我使用 11 是因为据我了解,我相信它一次从我的一个热向量中获取 11 个值)
我收到错误消息:
ValueError: Input 0 of layer conv1d is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 231]
完整追溯:
Traceback (most recent call last):
File "/Volumes/Hajar's HDD/MSc_data/large_proteins/ml_network.py", line 18, in <module>
model.add(Conv1D(128, 11, activation = 'relu', input_shape = (n_cols,)))
File "/anaconda3/lib/python3.7/site- packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper
result = method(self, *args, **kwargs)
File "/anaconda3/lib/python3.7/site- packages/tensorflow/python/keras/engine/sequential.py", line 169, in add
layer(x)
File "/anaconda3/lib/python3.7/site- packages/tensorflow/python/keras/engine/base_layer.py", line 589, in __call__
self.name)
File "/anaconda3/lib/python3.7/site- packages/tensorflow/python/keras/engine/input_spec.py", line 124, in assert_input_compatibility
str(x.shape.as_list()))
我试图改变内核大小,但我仍然得到同样的错误。我想也许我之前需要另一个输入层。对于内核大小,这是特征数,即 231?
解决方案
您将需要输入shape=(231, x )
其中 x 是第二维的位置。您可以尝试使用x = 1
like :
import numpy as np
n_cols = x_train.shape([1])
x_train = np.reshape( x_train , ( -1 , n_cols , 1 ) )
model.add(Conv1D(128, 11, activation = 'relu', input_shape = (n_cols,1)))
Conv1D
需要形式为(batch_size, a, b )
wherea
和b
是非零维度的二维输入。
推荐阅读
- scheme - 如何在 drRacket 中访问本地内部的向量
- c# - 使用 JsonUtility 反序列化嵌套对象
- angular - 如何自定义角度材料输入/选择下划线框
- hadoop - 如何修复 Hadoop3.1.2 “WARN util.NativeCodeLoader”
- pandas - 如何使用列中不同元素的值创建另一列?
- php - Laravel Eloquent 集合排序不生效
- javascript - 在单页应用程序中,当在 VueJs 中输入新数据时,如何在不重新加载页面的情况下重新加载 api
- python - Selenium Web 驱动程序:如何从元素中获取 url?
- kubernetes - 坚持尝试通过端口 8080 将 Angular 前端连接到 Java 后端
- r - GGplot scale_fill_manual() 意外行为