首页 > 解决方案 > python中完全连接的深度神经网络输入的重塑误差

问题描述

我正在实现一个完全连接的深度神经网络。为网络提供数据需要重塑我的数据,但我面临这个错误。这是解决它的任何建议吗?

import time
start=time.time()
import numpy as np
from keras.layers import Dense
from keras.models import Sequential
from scipy.io import loadmat

Tar_train = (x['t_train']) 
Tar_val = (x['t_val'])
Tar_test = (x['t_test'])

Signal_train = x['data_train']
Signal_val = x['data_val']
Signal_test = x['data_test']

Signal_train = np.reshape(Signal_train,(240*64)) 
Signal_val = np.reshape(Signal_val,(240*64))
Signal_test = np.reshape(Signal_test,(240*64))

model = Sequential()
model.add(Dense(20 , activation='relu' , input_shape=(240*64,) ))
model.add(Dense(200, activation='relu'))

signal_train 的大小是 (1274, 240, 64) signal_validation 的大小是 (510, 240 , 64) signal_test 的大小是 (764, 240, 64)

错误是:ValueError:无法将大小为 19568640 的数组重新整形为形状(15360,)

标签: pythonarraysnumpyreshape

解决方案


假设错误发生在第一个np.reshape,使用

Signal_train = np.reshape(Signal_train, (-1, 240*64)) 
Signal_val = np.reshape(Signal_val, (-1, 240*64))
Signal_test = np.reshape(Signal_test, (-1, 240*64))

这是因为Signal_train当您展平其余两个维度时,会保留第一个维度(1274,对于 )。例如,当您将 1274 张 240 x 64 的图像展平为 1274 个尺寸为 240*64 的向量时,总共仍有 1274 张图像。

-1对于维度大小意味着让 numpy 使用适合原始大小的任何维度大小。在这种情况下,第一个-1是隐含的1274,等等。


推荐阅读