Я работаю над нейробиологическим экспериментом, где я смотрю на пары стимул-продукт и работаю, чтобы смоделировать отображение между ними в Tensorflow. У меня проблемы с пониманием форм.
Я sh для обучения сети для сопоставления скаляров и двоичных векторов.
Набор скаляров: сопоставлен с: набор двоичных векторов
[1,2,3] -> [[1,0,1], [0,1,0], [1,1,0]]
В этом примере существует 3 пары стимул-произведение, а ширина двоичного выхода равна 3.
В настоящее время в моей модели есть 1 входной нейрон и 3 выходных нейрона, чтобы отразить это. Когда я прогнозирую пару стимул-произведение, я хочу загрузить 1 входной нейрон скаляром с некоторым индексом и получить соответствующий двоичный вектор из 3 выходных нейронов, 1 бит из каждого выходного нейрона. Учебный набор представляет собой набор этих отображений.
Моя текущая модель:
model = Sequential()
model.add(Dense(1, input_dim=1, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
, и данные обучения выглядят так:
Scalar set:
[1 2 3]
Binary Vector set:
[[1 0 1]
[0 1 0]
[1 0 0]]
Когда я прогнозирую на При заданном наборе весов я получаю данные этой формы:
model.predict_classes(inputs) where inputs = [1,2,3]
Output = [0 1 0]
, когда я ожидаю, что выходные данные будут двухмерными для представления двоичных значений в исходном тензоре:
[[1 0 1]
[0 0 1]
[1 1 0]]
Как мне сформировать мою модель для тренировки и вывести эту 2d форму? Использую ли я правильную функцию активации выхода для тренировки с двоичным?