张量偏差和权重变量

时间:2018-02-16 17:32:38

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

我已经为像素分类创建了一个深度卷积神经网络。我的训练图像尺寸为32x32x7,因此使用的数字是7168。下面你可以看到我的模型的最终结果是通过重量和偏见重新塑造和修改的。我对这种体重和偏见有点困惑。 在模型训练期间是否会自动调整权重和偏差?我从不为这些变量赋值,所以我假设train_step会根据交叉熵得分修改它们。这是对的吗?

final = tf.add(add1,add2)
final = tf.reshape(final, [-1, 7168])

W_final = weight_variable([7168,7168,3])
b_final = bias_variable([7168,3])
final_conv = tf.tensordot(final, W_final, axes=[[1], [1]]) + b_final

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_,  logits=final_conv))
train_step = tf.train.AdamOptimizer(1e-5, epsilon = .1).minimize(cross_entropy)

1 个答案:

答案 0 :(得分:2)

您在模型中创建的变量会发生什么变化取决于您对它们的处理方式。正如您所指出的,TensorFlow的典型用例是根据一些损失分数自动调整(“训练”),在您的情况下是交叉熵。您有计算损失的张量cross_entropytrain_step,这是一个更新模型中可训练变量的优化操作(默认情况下,您创建的变量是可训练的,除非指定trainable=False根据某些规则,取决于cross_entropy的值。除此之外,您还需要:

  • tf.global_variables_initializer操作。
  • 新的session
  • 在会话中运行变量初始化程序操作。这将为您的变量提供初始值。请注意,此初始值的性质取决于您在创建变量时选择的初始值设定项(零,随机法线等)。
  • 使用您的培训数据运行train_step,直到cross_entropy具有“足够好”的值。每次执行此操作时,变量的值都会稍微改变,以使模型适合数据。

所以实际上变量发生的一切都或多或少都是明确的。你可以选择用它们做任何其他事情,你可以有一些不可训练的变量,例如,你可以添加正则化器等。