Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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
Python 检查输入时训练模型错误:预期输入_1有4个维度,但得到了具有形状的数组(1827392、224、3)?_Python_Arrays_Keras_Deep Learning_Jupyter Notebook - Fatal编程技术网

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')

基本输入的形状是什么?