Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow ValueError:输入0与层模型不兼容:预期的形状=(无,14999,7),找到的形状=(无,7)_Tensorflow_Machine Learning_Keras_Deep Learning_Multiclass Classification - Fatal编程技术网

Tensorflow ValueError:输入0与层模型不兼容:预期的形状=(无,14999,7),找到的形状=(无,7)

Tensorflow ValueError:输入0与层模型不兼容:预期的形状=(无,14999,7),找到的形状=(无,7),tensorflow,machine-learning,keras,deep-learning,multiclass-classification,Tensorflow,Machine Learning,Keras,Deep Learning,Multiclass Classification,我正在尝试将Conv1D层应用于具有数字数据集的分类模型。我的模型的神经网络如下 model = tf.keras.models.Sequential() model.add(tf.keras.layers.Conv1D(8,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu',input_shape = (14999,7))) model.add(tf.keras.layers.Conv1D(16,kernel_

我正在尝试将Conv1D层应用于具有数字数据集的分类模型。我的模型的神经网络如下

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv1D(8,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu',input_shape = (14999,7)))
model.add(tf.keras.layers.Conv1D(16,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu'))
model.add(tf.keras.layers.MaxPooling1D(2))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Conv1D(32,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu'))
model.add(tf.keras.layers.Conv1D(64,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu'))
model.add(tf.keras.layers.MaxPooling1D(2))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Conv1D(128,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu'))
model.add(tf.keras.layers.Conv1D(256,kernel_size = 3, strides = 1,padding = 'valid', activation = 'relu'))
model.add(tf.keras.layers.MaxPooling1D(2))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(512,activation = 'relu'))
model.add(tf.keras.layers.Dense(128,activation = 'relu'))
model.add(tf.keras.layers.Dense(32,activation = 'relu'))
model.add(tf.keras.layers.Dense(3, activation = 'softmax'))
模型的输入形状是(14999,7)

model.summary()提供以下输出

Model: "sequential_8"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d_24 (Conv1D)           (None, 14997, 8)          176       
_________________________________________________________________
conv1d_25 (Conv1D)           (None, 14995, 16)         400       
_________________________________________________________________
max_pooling1d_10 (MaxPooling (None, 7497, 16)          0         
_________________________________________________________________
dropout_9 (Dropout)          (None, 7497, 16)          0         
_________________________________________________________________
conv1d_26 (Conv1D)           (None, 7495, 32)          1568      
_________________________________________________________________
conv1d_27 (Conv1D)           (None, 7493, 64)          6208      
_________________________________________________________________
max_pooling1d_11 (MaxPooling (None, 3746, 64)          0         
_________________________________________________________________
dropout_10 (Dropout)         (None, 3746, 64)          0         
_________________________________________________________________
conv1d_28 (Conv1D)           (None, 3744, 128)         24704     
_________________________________________________________________
conv1d_29 (Conv1D)           (None, 3742, 256)         98560     
_________________________________________________________________
max_pooling1d_12 (MaxPooling (None, 1871, 256)         0         
_________________________________________________________________
dropout_11 (Dropout)         (None, 1871, 256)         0         
_________________________________________________________________
flatten_3 (Flatten)          (None, 478976)            0         
_________________________________________________________________
dense_14 (Dense)             (None, 512)               245236224 
_________________________________________________________________
dense_15 (Dense)             (None, 128)               65664     
_________________________________________________________________
dense_16 (Dense)             (None, 32)                4128      
_________________________________________________________________
dense_17 (Dense)             (None, 3)                 99        
=================================================================
Total params: 245,437,731
Trainable params: 245,437,731
Non-trainable params: 0
然后,模型拟合代码如下所示:

model.compile(loss = 'sparse_categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
history = model.fit(xtrain_scaled, ytrain_scaled, epochs = 30, batch_size = 5, validation_data = (xval_scaled, yval_scaled))
在执行时,我面临以下错误

ValueError: Input 0 is incompatible with layer model: expected shape=(None, 14999, 7), found shape=(None, 7)
谁能帮我解决这个问题。。。?
提前感谢:)

TL;医生:

改变

model.add(tf.keras.layers.Conv1D(8,内核大小=3,步幅=1,填充=valid',激活=relu',输入=14999,7))

model.add(tf.keras.layers.Conv1D(8,内核大小=3,步幅=1,填充=valid',激活=relu',输入=7))

完整答案:

假设:我猜您选择在输入形状中写入14999的原因是因为这是培训数据的批量大小/总大小

这方面的问题:

  • Tensorflow假定输入形状不包括批次大小
    • 通过指定2D
      输入形状
      ,您使Tensorflow期望3D输入形状
      (批量大小,14999,7)
      。但您的输入显然是大小
      (批次大小,7)
解决方案:

将形状从
(14999,7)
更改为仅
(7)

  • TF现在将期望与您提供的形状相同
PS:不要担心将数据集中有多少训练示例告知您的模型。TF Keras的工作假设是可以显示无限的训练示例