假设我有一个卷积神经网络,它应该预测图像中的两个不同的(语义)事物,每个事物可以分类为N维输出。所以我的网络看起来像这样:
# architecture
input
(RGB images)
|
conv_layer 1
|
.....
|
conv_layer n
|
_______________
| |
fc1_x fc1_y <-- fully-connected layer 1
| |
fc2_x fc2_y <-- fully-connected layer 2 / output
(output_x) (output_y)
output_x
是维度(1, 1000)
的向量,因此预测超过1000个类。 output_y
是维度(1, 500)
的向量,因此预测超过500个类。
x和y中的类在语义上是相关的,因此它们不一个热编码。相反,在训练向量中拟合了围绕真实类的正态分布。
在每个训练步骤中,我都将这样的交叉熵误差降到最低:
train_step_x = tf.train.AdamOptimizer(0.001).minimize(cross_entropy_x)
train_step_y = tf.train.AdamOptimizer(0.001).minimize(cross_entropy_y)
因此,我计算output_x
和output_y
的不同交叉熵错误。
到目前为止,我对网络的(培训)结果感到满意。但是,网络架构不是最终的。它将变得更大并最终更深,训练数据集将比现在大几个数量级。
我的问题是:这是一个合理的网络架构吗?或者它被认为是糟糕的设计?
Tensorflow是否真的分别训练了两个流?或者是我的两个AdamOptimizers,每个学习步骤糟糕的设计,我只是得到了#34;神奇地&#34;看起来很好看,虽然我的建筑不会被认为是好的&#34;对于这个问题?
我认为两个不同的完全连接&#34;流&#34;对于x和y数据/类,对于应该在两个不同的&#34;组之间预测的架构是合理的。课程。