Per документация Keras
data_format: Строка, один из "channel_last" (по умолчанию) или "channel_first". Порядок размеров на входах. «channel_last» соответствует входам с формой (пакет, шаги, каналы) (формат по умолчанию для временных данных в Керасе), в то время как «channel_first» соответствует входам с формой (пакет, каналы, шаги)
Сейчас Keras в TensorFlow, по-видимому, реализует Conv1D
в терминах оператора Conv2D
- в основном формируя «изображение» с 1 строкой, W
столбцами, а затем ваши C
«каналы». Вот почему вы получаете сообщения об ошибках о формах изображения, когда у вас нет данных изображения.
В документах над "каналами" указано количество элементов данных за шаг по времени (например, возможно, у вас есть 5 показаний датчика на каждом шаг по времени, чтобы у вас было 5 каналов). Из ваших ответов выше я полагаю, что вы передаете тензоры в форме (n, 1, 2048)
, где n
- размер вашей партии. Так, с channels_last
TensorFlow считает, что это означает, что у вас есть n
примеров в вашем пакете, каждый с длиной последовательности элементов данных 1
и 2048
на шаг по времени - это только один временной шаг с 2048 элементами данных на наблюдение (например, 2048 показаний датчика, взятых на каждом временном шаге), в этом случае свертка не будет выполнять свертку - она будет эквивалентна одному плотному слою, принимающему все 2048 чисел в качестве ввода.
Я думаю в действительности у вас есть только один элемент данных на шаг по времени, и у вас есть 2048 шагов по времени Это объясняет, почему передача channels_first
повышает вашу точность - теперь TensorFlow понимает, что ваши данные представляют 1 выборку элементов данных 2048 раз, и это может привести к свертке этих данных.
Чтобы исправить, вы можете просто tf.reshape(t, (1, 2048, 1))
- и удалите channels_first
(этот код предполагает, что вы делаете пакеты размером 1, а ваш тензор называется t
). Теперь он находится в формате (n, s, 1)
, где n
- размер пакета (1
здесь), s
- количество временных шагов (2048), а 1
указывает одну точку данных на один временной шаг. Теперь вы можете запустить ту же модель на GPU или CPU.