使用Keras/TensorFlow训练手语识别CNN模型时出现InvalidArgumentError报错怎么办
错误根因
- 输出层神经元数量和数据集类别数不匹配:你使用
class_mode='categorical'加载数据集,标签会被转为对应类别数的独热编码,从报错信息In[0] mismatch In[1] shape: 35 vs. 1: [32,35] [500,1]可以看出你的手语数据集共35个分类,但你模型最后一层全连接层仅设置了units=1,输出维度和标签维度无法对齐,触发矩阵运算错误。 - 冗余参数:仅模型第一层卷积需要指定
input_shape,后续卷积层会自动推导输入维度,你在第二、三层卷积层重复填写的input_shape属于无效代码;另外ImageDataGenerator返回的生成器已经指定了batch_size,调用fit时无需再传入batch_size参数。
修复后的可运行代码
import tensorflow as tf from tensorflow.keras import datasets,layers,models import numpy as np import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.image import ImageDataGenerator # 数据预处理 train_datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) training_set = train_datagen.flow_from_directory('split__data/Train', target_size = (64, 64), batch_size = 32, class_mode = 'categorical') test_datagen = ImageDataGenerator(rescale = 1./255) test_set = test_datagen.flow_from_directory('split__data/Test', target_size = (64, 64), batch_size = 32, class_mode = 'categorical') # 构建模型 cnn = tf.keras.models.Sequential() cnn.add(tf.keras.layers.Conv2D(filters = 16,kernel_size = 3,activation = 'relu',input_shape = [64,64,3])) cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2)) cnn.add(tf.keras.layers.Conv2D(filters = 32,kernel_size = 3,activation = 'relu')) cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2)) cnn.add(tf.keras.layers.Conv2D(filters = 64,kernel_size = 3,activation = 'relu')) cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2)) cnn.add(tf.keras.layers.Flatten()) cnn.add(tf.keras.layers.Dense(units=500,activation='relu')) # 输出层神经元数改为数据集实际类别数,用training_set.num_classes自动适配无需手动写死 cnn.add(tf.keras.layers.Dense(units=training_set.num_classes,activation='softmax')) # 编译训练 cnn.compile(optimizer = 'adam' , loss= 'categorical_crossentropy',metrics = ['accuracy']) cnn.fit(x = training_set,validation_data = test_set,epochs = 10)
验证说明
你可以先执行print(training_set.num_classes)确认数据集的实际分类数,确保输出层维度和分类数一致后即可正常训练。
内容的提问来源于stack exchange,提问作者Deepak Kumar
相关产品推荐
相关产品推荐

