我正在尝试在 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
类似:
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 )
,其中a
和b
是非零维度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句