Tensorflow:分别训练两层流?

时间:2016-02-15 20:25:35

标签: python machine-learning neural-network tensorflow conv-neural-network

假设我有一个卷积神经网络,它应该预测图像中的两个不同的(语义)事物,每个事物可以分类为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_xoutput_y的不同交叉熵错误。

到目前为止,我对网络的(培训)结果感到满意。但是,网络架构不是最终的。它将变得更大并最终更深,训练数据集将比现在大几个数量级。

我的问题是:这是一个合理的网络架构吗?或者它被认为是糟糕的设计

Tensorflow是否真的分别训练了两个流?或者是我的两个AdamOptimizers,每个学习步骤糟糕的设计,我只是得到了#34;神奇地&#34;看起来很好看,虽然我的建筑不会被认为是好的&#34;对于这个问题?

我认为两个不同的完全连接&#34;流&#34;对于x和y数据/类,对于应该在两个不同的&#34;组之间预测的架构是合理的。课程。

0 个答案:

没有答案