Python 检查输入时训练模型错误:预期输入_1有4个维度,但得到了具有形状的数组(1827392、224、3)?
我正在尝试训练情绪检测模型 当我尝试使用此方法时,它给出了一个错误:Python 检查输入时训练模型错误:预期输入_1有4个维度,但得到了具有形状的数组(1827392、224、3)?,python,arrays,keras,deep-learning,jupyter-notebook,Python,Arrays,Keras,Deep Learning,Jupyter Notebook,我正在尝试训练情绪检测模型 当我尝试使用此方法时,它给出了一个错误: ( " new_model.fit(X,Y, epochs = 45) ") 我的代码在第32行中给出了一个错误 错误表示其数组不是4维。(X=np.数组(X).重塑(-1, img_尺寸,3) 它不转换到第四维度吗?我该怎么办? 代码如下 import tensorflow as tf import cv2 import os import matplotlib.pyp
( " new_model.fit(X,Y, epochs = 45) ")
我的代码在第32行中给出了一个错误
错误表示其数组不是4维。(X=np.数组(X).重塑(-1,
img_尺寸,3)
它不转换到第四维度吗?我该怎么办?
代码如下
import tensorflow as tf
import cv2
import os
import matplotlib.pyplot as plt
import numpy as np
# In[2]:
img_array = cv2.imread("Training/0/Training_233976.jpg")
# In[3]:
img_array.shape
# In[4]:
plt.imshow(img_array)
# In[5]:
Datadirectory = "Training/"
# In[6]:
Classes= ["0","1","2","3","4","5","6"] ## Dosya isimleri ile aynı olmalı 0=sinirli,1=tiksinme,2=korku,3=mutlu,4=doğal,5=üzgün,6=şaşkın
# In[7]:
for category in Classes:
path = os.path.join(Datadirectory, category)
for img in os.listdir(path):
img_array = cv2.imread(os.path.join(path,img))
plt.imshow(cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB))
plt.show()
break
break
# In[8]:
img_size= 224
new_array= cv2.resize(img_array, (img_size,img_size))
plt.imshow(cv2.cvtColor(new_array, cv2.COLOR_BGR2RGB))
plt.show()
# In[9]:
new_array.shape
# In[10]:
training_Data = [] ## data array
def create_training_Data():
for category in Classes:
path = os.path.join(Datadirectory, category)
class_num = Classes.index(category)
for img in os.listdir(path):
try:
img_array = cv2.imread(os.path.join(path,img))
new_array= cv2.resize(img_array, (img_size,img_size))
training_Data.append([new_array,class_num])
except Exception as e:
pass
# In[11]:
create_training_Data()
# In[12]:
print(len(training_Data))
# In[13]:
import random
random.shuffle(training_Data)
# In[14]:
X = [] ## data/feature
y = [] ## label
for features,label in training_Data:
X.append(features)
y.append(label)
X = np.array(X).reshape(-1, img_size, 3) ## 4 boyuta dönüştürlüyor
# In[15]:
X.shape
# In[16]:
X= X/255.0; ## normalize the data bölümü
# In[17]:
type(y)
# In[36]:
y[0]
# In[37]:
Y= np.array(y)
# In[38]:
Y.shape
# In[22]:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# In[23]:
model = tf.keras.applications.MobileNetV2()
# In[24]:
model.summary()
# In[25]:
base_input = model.layers[0].input
# In[26]:
base_output = model.layers[-2].output
# In[27]:
base_output
# In[28]:
final_output = layers.Dense(128)(base_output) ## yeni katman ekleme
final_output = layers.Activation('relu')(final_output) ##fonksoynu aktivite etme
final_output = layers.Dense(64)(final_output)
final_output = layers.Activation('relu')(final_output)
final_output = layers.Dense(7,activation='softmax')(final_output) ## 7 tane sınıfım var
# In[29]:
new_model = keras.Model(inputs = base_input, outputs= final_output)
# In[30]:
new_model.summary()
# In[31]:
new_model.compile(loss="sparse_categorical_crossentropy", optimizer = "adam" , metrics = ["accuracy"])
# In[32]:
new_model.fit(X,Y, epochs = 45)
# In[ ]:
new_model.save('Final_model_95p07.h5')
基本输入的形状是什么?