大佬教程收集整理的这篇文章主要介绍了不断收到错误:lstm_8 层的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=4。收到完整形状:(无、94、94、32),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 LSTM 模型进行字母分类。输入是 96x96 大小的二进制图像
第一步是加载数据
DATADIR = '/content/drive/MyDrive/Mihir_etal_Assamese_Dataset/DATASET_1'
CATEGORIES = ['1','2','3','4','5']
kernel=np.ones((2,2),np.int8)
Training_data = []
for category in CATEGORIES:
path = os.path.join(DATADIR,category)
label = CATEGORIEs.index(category)
for img in os.Listdir(path):
img_array = cv2.imread(os.path.join(path,img),cv2.IMREAD_GRAYSCALE)
ret,img_array = cv2.threshold(img_array,255,cv2.THRESH_OTSU)
gray = 255*(img_array < 128).astype(np.uint8)
coords = cv2.findNonZero(gray) # Find all zero points (text)
x,y,w,h = cv2.boundingRect(coords)
img_array = graY[y:y+h,x:x+w] # Crop the image
img_array = 255*(img_array < 128).astype(np.uint8)
img_array = cv2.resize(img_array,(96,96),)
Training_data.append([img_array,label])
然后将我的训练数据列表转换为 X,y 数组用于模型输入
X = []
y = []
for data,label in Training_data:
X.append(data)
y.append(label)
X= np.array(X).reshape(-1,96,1)
y= np.array(y)
然后拆分数据集
from sklearn.model_SELEction import Train_test_split
X_Train,X_test,y_Train,y_test = Train_test_split(X,test_size=0.2)
构建我的模型
from keras import Sequential
LSTM = tf.keras.layers.LSTM
Dropout = tf.keras.layers.Dropout
Dense = tf.keras.layers.Dense
Conv2D = tf.keras.layers.Conv2D
model = Sequential()
model.add(Conv2D(32,(3,3),input_shape = X_Train.shape[:1]))
model.add(LSTM(32))
model.add(Dropout(0.5))
model.add(LSTM(50,return_sequences=TruE))
model.add(Dropout(0.5))
model.add(LSTM(50,return_sequences=TruE))
model.add(Dropout(0.5))
model.add(LSTM(50))
model.add(Dropout(0.5))
model.add(Dense(5,activation='softmax'))
我尝试了各种解决方案,但我的模型输入中的尺寸一直不匹配。尝试删除添加 Conv2D 层,但没有任何区别。还是一样的错误
以上是大佬教程为你收集整理的不断收到错误:lstm_8 层的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=4。收到完整形状:(无、94、94、32)全部内容,希望文章能够帮你解决不断收到错误:lstm_8 层的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=4。收到完整形状:(无、94、94、32)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。