gpt4 book ai didi

python - 我在调整 ConvLSTM 模型的大小/输入数组时收到错误消息

转载 作者:行者123 更新时间:2023-12-02 17:06:32 24 4
gpt4 key购买 nike

我有一个包含每日降水图图像的数据集。我正在尝试使用 ConvLSTM2D 构建降水临近预报模型。

请帮我弄清楚如何改变阵列的形状以使其工作。

以此为引用:https://github.com/wqxu/ConvLSTM/blob/master/radar_forecast.py

请帮我解决这个错误:

Error when checking input: expected conv_lst_m2d_167_input to have 5 dimensions, but got array with shape (1785, 400, 320, 3)

如果我向 X_Train 的 reshape 数组添加另一个维度:
X_Train = np.array(X).reshape(-1, 400, 320, 1, 3)[:1785] # converting list to a numpy array

我收到以下错误 [1785 发生了什么?]:
Error when checking input: expected conv_lst_m2d_167_input to have 5 dimensions, but got array with shape (400, 320, 1, 3)

如果我向 ConvLSTM2D 输入层的 input_shape 添加另一个维度:
model.add(ConvLSTM2D(filters=128, kernel_size=(3, 3), input_shape=(None, 400, 320, 1, 3), padding='same', return_sequences=True))

我收到以下错误:
ValueError: Input 0 is incompatible with layer conv_lst_m2d_5:expected ndim=5, found ndim=6

目前我只是想找到任何实际可行的情况,以便我可以从那里开始。如果可以的话请帮忙。

基本上我想知道问题是否出在数组的维数上?如果是这样,我该如何改变它?
import numpy as np
import os
import cv2
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers.convolutional import Conv3D
from keras.layers.convolutional_recurrent import ConvLSTM2D
from keras.layers.normalization import BatchNormalization

DATADIR = "C:/Users/StephanIliffe/Documents/data"

training_data = []

def create_training_data():
path = os.path.join(DATADIR, "Input") # path to jpg precipitation maps
class_num = 1
for img in os.listdir(path):
img_array = cv2.imread(os.path.join(path, img))
new_array = cv2.resize(img_array, (400, 320))
training_data.append([new_array, class_num])

create_training_data()

X = []
X_Train = []
X_Test = []

for features, label in training_data:
X.append(features)

X_Train = np.array(X).reshape(-1, 400, 320, 3)[:1785] # converting list to a numpy array
X_Test = np.array(X).reshape(-1, 400, 320, 3)[765:] # converting list to a numpy array

model = Sequential()

model.add(ConvLSTM2D(filters=128, kernel_size=(3, 3),
input_shape=(None, 400, 320, 3),
padding='same', return_sequences=True))
model.add(BatchNormalization())

model.add(ConvLSTM2D(filters=128, kernel_size=(3, 3),
padding='same', return_sequences=True))
model.add(BatchNormalization())

model.add(ConvLSTM2D(filters=128, kernel_size=(3, 3),
padding='same', return_sequences=True))
model.add(BatchNormalization())

model.add(ConvLSTM2D(filters=128, kernel_size=(3, 3),
padding='same', return_sequences=True))
model.add(BatchNormalization())

model.add(Conv3D(filters=1, kernel_size=(3, 3, 3),
activation='sigmoid',
padding='same', data_format='channels_last'))

model.compile(loss='mean_squared_error', optimizer='adadelta')
model.fit(X_Train, X_Test, batch_size=30, epochs=10, validation_split=0.05)

最佳答案

嗯,这正是错误所说的:expected conv_lst_m2d_167_input to have 5 dimensions, but got array with shape (400, 320, 1, 3) .您的输入数据有四个维度;它需要有五个:(samples, time, rows, columns, channels) .

关于python - 我在调整 ConvLSTM 模型的大小/输入数组时收到错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53955667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com