wor*_*005 1 c++ matlab tensorflow
我已经构建了一个回归类型的神经网络(NN),由Tensorflow辍学.我想知道是否有可能找到从输出文件中的上一层中删除哪些隐藏单元.因此,我们可以通过C++或Matlab实现NN结果.
以下是Tensorflow模型的示例.有三个隐藏层和一个输出层.在第3个sigmoid层之后,存在一个概率等于0.9的丢失.我想知道是否可以知道第三个sigmoid层中哪些隐藏单元被丢弃.
def multilayer_perceptron(_x, _weights, _biases):
layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(_x, _weights['h1']), _biases['b1']))
layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2']))
layer_3 = tf.nn.sigmoid(tf.add(tf.matmul(layer_2, _weights['h3']), _biases['b3']))
layer_d = tf.nn.dropout(layer_3, 0.9)
return tf.matmul(layer_d, _weights['out']) + _biases['out']
Run Code Online (Sandbox Code Playgroud)
非常感谢你!
有一种方法可以获得0和1的掩模,以及由... layer_3.get_shape()生成的形状tf.nn.dropout().
诀窍是为你的辍学行动命名:
layer_d = tf.nn.dropout(layer_3, 0.9, name='my_dropout')
Run Code Online (Sandbox Code Playgroud)
然后你可以通过TensorFlow图获得想要的掩码:
graph = tf.get_default_graph()
mask = graph.get_tensor_by_name('my_dropout/Floor:0')
Run Code Online (Sandbox Code Playgroud)
张量mask将是相同的形状和类型如layer_d,并且将仅具有值0或1.0对应于掉落的神经元.