【问题标题】:InvalidArgumentError: Input to reshape is a tensor with 7872512 values, but the requested shape requires a multiple of 6400InvalidArgumentError:reshape 的输入是具有 7872512 个值的张量,但请求的形状需要 6400 的倍数
【发布时间】:2021-06-25 03:48:16
【问题描述】:

大家好,我是深度学习的新手,在这里我正在尝试实现一个图像分类器,但是当我运行包含 fit 方法的单元格时,它显示以下错误我不知道如何解决这个错误我已经检查了各种类似的帖子也在这个错误上,但我没有得到它们,如果你知道如何解决它,请帮助我,请告诉我一个简短的细节为什么会出现这个问题。

InvalidArgumentError:reshape 的输入是一个带有 7872512 的张量 值,但请求的形状需要 6400 的倍数 [[节点 sequence_7/flatten_6/Reshape(定义在 :1) ]] [操作:__inference_train_function_5120]

函数调用栈:train_function

import pandas as pd
import numpy as np
import cv2
import tensorflow as tf
from   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('drive/MyDrive/EmotionDetectionDataset/dataset/train')


test_datagen = ImageDataGenerator(rescale=1. / 255)
validation_generator = test_datagen.flow_from_directory('drive/MyDrive/EmotionDetectionDataset/dataset/test',target_size=(48,48),batch_size=32,class_mode='categorical')

test_set = validation_generator
cnn = tf.keras.models.Sequential()


cnn.add(tf.keras.layers.Conv2D(filters=32,kernel_size = 3,activation='relu',input_shape=[48,48,3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=(2,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,2),strides=2))

cnn.add(tf.keras.layers.Flatten())

cnn.add(tf.keras.layers.Dense(units=128,activation='relu'))


cnn.add(tf.keras.layers.Dense(units=7,activation='relu'))

cnn.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])


cnn.fit(x=training_set,validation_data=test_set,epochs=25)

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning conv-neural-network


    【解决方案1】:

    您忘记指定训练集的目标大小,使用的默认值是(256,256),但您使用的是(48,48)

    training_set = train_datagen.flow_from_directory('drive/MyDrive/EmotionDetectionDataset/dataset/train', target_size=(48,48),batch_size=32,class_mode='categorical')
    validation_generator = test_datagen.flow_from_directory('drive/MyDrive/EmotionDetectionDataset/dataset/test',target_size=(48,48),batch_size=32,class_mode='categorical')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2020-02-15
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多