Python ValueError:检查输入时出错:预期时间\u分布\u 46\u输入有5个维度,但得到了形状为(200,200,3)的数组

Python ValueError:检查输入时出错:预期时间\u分布\u 46\u输入有5个维度,但得到了形状为(200,200,3)的数组,python,image,tensorflow,machine-learning,keras,Python,Image,Tensorflow,Machine Learning,Keras,我正在修补时间分布层,日子过得很艰难。我正在尝试创建一个非常简单的模型,它采用200x200RGB图像并读取上面写的字符 我不断遇到以下错误,我不确定如何修复它: ValueError: Error when checking input: expected time_distributed_46_input to have 5 dimensions, but got array with shape (200, 200, 3) 以下是我的keras代码: num_timesteps = le

我正在修补时间分布层,日子过得很艰难。我正在尝试创建一个非常简单的模型,它采用200x200RGB图像并读取上面写的字符

我不断遇到以下错误,我不确定如何修复它:

ValueError: Error when checking input: expected time_distributed_46_input to have 5 dimensions, but got array with shape (200, 200, 3)
以下是我的keras代码:

num_timesteps = len(chars) # length of sequence
img_width = 200
img_height = 200
img_channels = 3

def model():
    # define CNN model
    cnn = Sequential()
    cnn.add(Conv2D(64, (3,3), activation='relu', padding='same', input_shape=(img_width,img_height,img_channels)))
    cnn.add(MaxPooling2D(pool_size=(3, 3)))
    cnn.add(Flatten())

    # define LSTM model
    model = Sequential()
    model.add(TimeDistributed(cnn, input_shape=(num_timesteps, img_width,img_height,img_channels)))
    model.add(LSTM(num_timesteps))
    model.add(Dense(26))

    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model
然后,我将模型拟合为:

model().fit_generator(generator=images_generator(), steps_per_epoch=20, epochs=2)
在这里,我生成如下图像:

def image_sample():
    rand_str = random_str()
    blank=Image.new("RGB", (200,200),(255,255,255))
    font = ImageFont.truetype("StatePlate.ttf", 100)
    draw = ImageDraw.Draw(blank)
    draw.text((30, 40),rand_str,(0,0,0), font=font)
    draw = ImageDraw.Draw(blank)
#     datagen = ImageDataGenerator(rotation_range=90)
#     datagen.fit(blank)
    return (np.asarray(blank), one_hot_char(rand_str))

def one_hot_char(char):
    zeros = np.zeros(len(chars))
    zeros[chars.index(char)] = 1
    return zeros

def images_generator():
    yield image_sample()

感谢您的帮助!谢谢。

目前,生成器返回一个图像。生成器生成的输入应具有以下形状:
[批次大小、数量时间步、img\u宽度、img\u高度、img\u通道]

此虚拟数据的快速修复方法是将
np.asarray(blank)
更改为
np.asarray([[blank]])