#machine-learning #keras #input #conv-neural-network
#машинное обучение #keras #ввод #conv-нейронная сеть
Вопрос:
Я видел несколько сообщений о изменении формы массивов numpy в качестве входных данных для CNN, однако мне не удалось успешно изменить свой массив в качестве входных данных для моего CNN!
У меня есть CNN, который сливается с другой моделью дальше по течению. Форма входных данных CNN (4,4,1)
— она больше, но я намеренно уменьшил ее, чтобы установить конвейер и запустить его, прежде чем вводить нужный размер.
формат будет тем же, однако, это 1 канал n x n np.array. При изменении формы я получаю ошибки, о которых я упомяну после кода. Входные размеры вводятся в модель следующим образом:
cnn_branch_input = tf.keras.layers.Input(shape=(4,4,1))
cnn_branch_two = tf.keras.layers.Conv2D(etc....)(cnn_branch_input)
характеристики и изменение формы массива np (который изначально является фреймом данных pandas) следующие:
np.array(array).shape
(4,4)
input = np.array(array).reshape(-1,1,4,4)
input.shape
(1,1,4,4)
входные данные для моей объединенной модели выглядят следующим образом:
model.fit([cnn_input,gnn_input, gnn_node_feat], y,
#sample_weight=train_mask,
#validation_data=validation_data,
batch_size=4,
shuffle=False)
это вызывает ошибку, которая имеет смысл для меня:
Ошибка значения: количество элементов данных неоднозначно:
размеры x: 1, 4, 4 — пожалуйста, предоставьте данные, которые имеют одно и то же первое измерение.
Итак, теперь при изменении формы намеренно иметь форму канала 4×4 плюс 1 следующим образом: input = np.array(массив).reshape(-1,4,4,1) input.shape (1,4,4,1)
Две вещи: массив преобразуется в массивы размером 4, 1×1, поэтому кажется, что структура исходного массива потеряна, и я получаю ту же ошибку!!
Обратите внимание, что в обоих методах изменения формы форма либо (1,4,4,1) or (1,1,4,4)
… запись -1 просто становится 1, заставляя CNN думать, что первый элемент — это форма 1. Я думал, что значение -1 позволит мне успешно добавить размер выборки как «любое количество выборок».
Просто вводя исходный (4,4)
массив, я получаю сообщение об ошибке, что CNN получил массив с 2 размерами, в то время как требуется массив с 4 размерами.
Я действительно не понимаю, как правильно изменить форму этого массива! Я был бы признателен за любую помощь!
Комментарии:
1. Насколько я помню, первое измерение — это количество выборок. (n, 4, 4, 1)
2. Итак, ваша целевая форма (4,4,1), и вы изменяете ее на (1,4,4) ? Как именно это должно работать?
3. итак, я также изменил форму на 4,4,1, но с размером ‘-1’, чтобы указать любой размер выборки, но это -1 преобразуется в 1. даже при изменении формы на 4,4,1 без указания -1 в качестве размера выборки я получаю сообщение об ошибке, что был предоставлен ожидаемый входной ndim 4, но ndim 3. следовательно, -1 … но это становится 1 .. именно с этой конкретной проблемой мне нужна помощь