Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Relu函数,返回0和大数字_Python_Tensorflow_Neural Network_Deep Learning - Fatal编程技术网

Python Relu函数,返回0和大数字

Python Relu函数,返回0和大数字,python,tensorflow,neural-network,deep-learning,Python,Tensorflow,Neural Network,Deep Learning,嗨,我是tensorflow神经网络的新手。我获取了spaces365数据集的一小部分。我想制作一个神经网络,在10个位置之间进行分类 为此,我尝试制作一个vgg网络的小副本。我的问题是,在softmax函数的输出处,我得到了一个热编码数组。寻找代码中的问题,我意识到relu函数的输出要么是0,要么是一个大数字(大约10000) 我不知道我错在哪里。这是我的代码: def variables(shape): return tf.Variable(2*tf.random_uniform(s

嗨,我是tensorflow神经网络的新手。我获取了spaces365数据集的一小部分。我想制作一个神经网络,在10个位置之间进行分类

为此,我尝试制作一个vgg网络的小副本。我的问题是,在softmax函数的输出处,我得到了一个热编码数组。寻找代码中的问题,我意识到relu函数的输出要么是0,要么是一个大数字(大约10000)

我不知道我错在哪里。这是我的代码:

def variables(shape):
    return tf.Variable(2*tf.random_uniform(shape,seed=1)-1)

def layerConv(x,filter):
    return tf.nn.conv2d(x,filter, strides=[1, 1, 1, 1], padding='SAME') 
def maxpool(x):
    return tf.nn.max_pool(x,[1,2,2,1],[1,2,2,1],padding='SAME')

weights0 = variables([3,3,1,16])

l0 = tf.nn.relu(layerConv(input,weights0))
l0 = maxpool(l0)

weights1 = variables([3,3,16,32])
l1 = tf.nn.relu(layerConv(l0,weights1))
l1 = maxpool(l1)

weights2 = variables([3,3,32,64])
l2 = tf.nn.relu(layerConv(l1,weights2))
l2 = maxpool(l2)

l3 = tf.reshape(l2,[-1,64*32*32])

syn0 = variables([64*32*32,1024])
bias0 =  variables([1024])
l4 = tf.nn.relu(tf.matmul(l3,syn0) + bias0)
l4 = tf.layers.dropout(inputs=l4, rate=0.4)

syn1 = variables([1024,10])
bias1 = variables([10])
output_pred = tf.nn.softmax(tf.matmul(l4,syn1) + bias1)

error = tf.square(tf.subtract(output_pred,output),name='error')
loss = tf.reduce_sum(error, name='cost')

#TRAINING

optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train = optimizer.minimize(loss)
神经网络的输入是256*256像素的标准化灰度图像。 学习率为0.1,批量大小为32


提前谢谢你

reLu本质上是什么:

def relu(vector):
    vector[vector < 0] = 0
    return vector
softmax的输出是一个热编码数组,这意味着存在问题,可能有很多问题

您可以尝试降低初学者的学习率,您可以使用
1e-4
/
1e-3
并进行检查。如果不起作用,尝试添加一些正则化。我也对你的体重初始化持怀疑态度

调节:这是一种回归形式,限制/调节或将系数估计值缩小到零。换句话说,这种技术不鼓励学习更复杂或更灵活的模型,以避免过度拟合的风险。-


链接到:

您遇到的问题是体重初始化。神经网络是高度复杂的非凸优化问题。因此,一个好的init对于获得任何好的结果都是至关重要的。如果使用ReLUs,则应使用He等人提出的初始化

本质上,网络的初始化应使用iid高斯分布值进行初始化,平均值为0,标准偏差如下:

stddev = sqrt(2 / Nr_input_neurons)

谢谢你的快速回答!我试图改变学习速度,但仍然不起作用。我不明白正规化是怎么运作的,你能解释一下吗?我的体重初始化怎么了?我想做的是初始化一个均值为0,std等于1的变量。@Mik3l我已经更新了我的答案,请按照其中的两个链接进行操作。这是真的!我的问题是初始化。我以tensorFlow提供的专家MNIST为例,解决了我的问题。非常感谢你!!那是真的!我的问题是初始化。我以tensorFlow提供的专家MNIST为例,解决了我的问题。非常感谢你!!
stddev = sqrt(2 / Nr_input_neurons)