Ошибка при проверке цели: ожидалось, что плотное_2 будет иметь форму (2049,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 03 августа 2020
def train_generator(mixed_dev_data,drums_dev_data,slicing_frame):
  for i in range(40):
    mixed_data=np.pad(mixed_dev_data['arr_'+str(i)],[(0,0),(slicing_frame//2,slicing_frame//2)],mode='constant')[...,np.newaxis]
    drums_data=drums_dev_data['arr_'+str(i)]
    for j in range(drums_data.shape[1]):
      sliced_mixed_data=(mixed_data[:,j:j+slicing_frame])[np.newaxis,:]
      sliced_drums_data=drums_data[:,j+slicing_frame//2]
      print(sliced_drums_data.shape) # for chekcing shape, this gives (2049,) which is proper value
      yield (sliced_mixed_data,sliced_drums_data)

и ниже - моя модель, которая принимает (2049, кадр, 1) в качестве ввода и вывода (2049,)

model=models.Sequential()
model.add(layers.Conv2D(32, (15,3), activation='relu',input_shape=(2049,slicing_frame,1)))
model.add(layers.Conv2D(16, (15,3), activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(5,1)))
model.add(layers.Dropout(0.35))
model.add(layers.Conv2D(64, (15,3),activation='relu'))
model.add(layers.Conv2D(32, (15,3),activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(5,1)))
model.add(layers.Dropout(0.35))
model.add(layers.Conv2D(64, (15,3),activation='relu'))
model.add(layers.Conv2D(32, (15,3),activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(2049*3,activation='relu'))
model.add(layers.Dense(2049,activation='sigmoid'))

model.compile(optimizer='rmsprop',loss='mse',metrics=['mae'])
history=model.fit_generator(generator=train_generator(Mixed_Dev,Drums_Dev,19),steps_per_epoch=100)

, а сообщение об ошибке ValueError: Error when checking target: expected dense_2 to have shape (2049,) but got array with shape (1,), что означает ошибка в конечном плотном слое. в чем проблема? и я также не понимаю, какую функцию потерь использовать.

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