Моделирование скалярных и двоичных векторных форм тензорного потока - PullRequest
0 голосов
/ 12 апреля 2020

Я работаю над нейробиологическим экспериментом, где я смотрю на пары стимул-продукт и работаю, чтобы смоделировать отображение между ними в 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 форму? Использую ли я правильную функцию активации выхода для тренировки с двоичным?

...