【问题标题】:reshape error of fully connected deep neural network input in pythonpython中完全连接的深度神经网络输入的重塑误差
【发布时间】:2019-10-17 04:49:43
【问题描述】:

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

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

【问题讨论】:

    标签: python arrays numpy reshape


    【解决方案1】:

    假设错误发生在第一个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))
    

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

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

    【讨论】:

    • 谢谢。我按照你说的做了,但我遇到了这个错误:ValueError: Error when checks target: expected dense_27 to have shape (2,) but got array with shape (1274,)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2017-03-18
    • 2010-12-02
    • 2017-06-14
    • 2017-04-13
    • 2018-07-25
    相关资源
    最近更新 更多