ошибка изменения формы полностью подключенного входа глубокой нейронной сети в python - PullRequest
0 голосов
/ 17 октября 2019

Я внедряю полностью подключенную глубокую нейронную сеть. чтобы прокормить сеть, нужно изменить мои данные, но я сталкиваюсь с этой ошибкой. это какое-либо предложение для ее решения?

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

1 Ответ

0 голосов
/ 17 октября 2019

Предполагая, что ошибка возникает в первом 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 на 64 в 1274 векторах размера 240 * 64, в сумме все равно остается 1274 изображения.

-1 для размера size означает, что numpy может использовать любое измерениеразмер, который соответствует оригинальному размеру. В этом случае первый -1 неявно 1274 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...