将标量建模为二进制矢量张量流形状

问题描述 投票:0回答:1

我正在做一个神经科学实验,我正在研究刺激产物对,并正在Tensorflow中为它们之间的映射建模。我在理解形状时遇到问题。

我希望训练一个网络,将标量和二进制矢量映射在一起。

标量集:映射到:二进制矢量集

[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形状?我是否使用正确的输出激活功能来针对二进制进行训练?

tensorflow tensorflow-datasets
1个回答
0
投票

尝试将input_dim=1更改为input_shape=()。这给你什么?

© www.soinside.com 2019 - 2024. All rights reserved.