Формы ввода Conv1D и MaxPooling1D - PullRequest
       0

Формы ввода Conv1D и MaxPooling1D

0 голосов
/ 27 декабря 2018

Я новичок в tenorflow Keras.Я строю CNN, чтобы тренироваться на моем 1D входе.Я ищу помощь относительно входных размеров слоев Conv1D и MaxPooling1D.

В данный момент функция обычно выглядит примерно так: [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Точно так же, он использует ярлык «одна горячая», как это: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

У меня есть 80 таких пар.

Они разделены на 50-50 (для обучения и проверки), а функции изменены на (1, 2080, 1), так какnumpy говорит, что мой массив имеет размер 2080.

num_classes = 10
model = keras.Sequential()

model.add(keras.layers.InputLayer(input_shape=[2080,1]))
model.add(keras.layers.Conv1D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(keras.layers.MaxPooling1D(pool_size = (10), strides=(5),data_format='channels_first'))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(512, activation='relu'))
model.add(keras.layers.Dense(num_classes, activation='softmax'))
#model.summary()

Мой ввод успешно подается через InputLayer и Conv1D, я ожидал того же для остальных слоев.Однако возвращается следующая ошибка: ожидается, что плотность_1 будет иметь 2 измерения, но получен массив с формой (1, 40, 10)

1 Ответ

0 голосов
/ 18 января 2019

Возможно, ошибка связана с данными о ваших функциях и данными с меткой.Убедитесь, что данные ваших функций имеют следующую форму (1, 2080, 1) и ваш ярлык: (1, 10).

Вот рабочий код:

from keras.models import Sequential
from keras.layers import Dense, Activation, Conv1D, MaxPooling1D, Flatten
import numpy as np

num_classes = 10
model = Sequential()

model.add(Dense(input_shape=[2080,1], units=10))
model.add(Conv1D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(MaxPooling1D(pool_size = (10), strides=(5), data_format='channels_first'))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='adam')

x_train = np.random.random((1, 2080, 1))
y_train = np.random.randint(10, size=(10))
y_train = np.reshape(y_train, (1, 10))
model.fit(x_train, y_train, epochs=5, batch_size=32)

живой код

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