python - Relu函数,返回0和大数

标签 python tensorflow neural-network deep-learning

嗨,我是 tensorflow 神经网络的新手。我获取了 space365 数据集的一小部分。我想制作一个神经网络来在 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:

def softmax(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum(axis=0)

softmax 的输出是一个 one-hot 编码数组,这意味着存在问题,而且可能有很多问题。

您可以尝试降低初学者的learning_rate,您可以使用1e-4/1e-3并检查。如果不起作用,请尝试添加一些正则化。我也对你的权重初始化表示怀疑。

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

链接到:Build a multilayer neural network with L2 regularization in tensorflow

关于python - Relu函数,返回0和大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50085955/

相关文章:

tensorflow - 当某个 Action 不可执行时如何减少神经网络输出

machine-learning - 训练后如何用时间分布密集替换嵌入层?

python - `ValueError: too many values to unpack (expected 4)` 与 `scipy.stats.linregress`

python - Cython:在没有 NumPy 数组的情况下创建内存 View ?

python - “DNN”对象在 ImageDataGenerator() 中没有属性 'fit_generator' - keras - python

docker - 在 Google Cloud 上查看 Docker 上的 Tensorboard

Windows 上的 TensorFlow : ImportError: No module named '_pywrap_tensorflow_internal'

python - raspbian 自定义守护进程手动启动但不启动

python - 将 s 转换为 h :m in y-axis in matplotlib (data_plot)

machine-learning - 为什么我们必须对人工神经网络的输入进行标准化?