我编写了一个非常基本的tensorflow模型,其中我想预测一个数字:
import tensorflow as tf
import numpy as np
def HW_numbers(x):
y = (2 * x) + 1
return y
x = np.array([1.0,2.0,3.0,4.0,5.0,6.0,7.0], dtype=float)
y = np.array(HW_numbers(x))
model = tf.keras.models.Sequential([tf.keras.layers.Dense(units=1,input_shape=[1])])
model.compile(optimizer='sgd',loss='mean_squared_error')
model.fit(x,y,epochs = 30)
print(model.predict([10.0])) 上面的代码可以正常工作。但是如果我在稠密层中添加一个激活函数,预测就变得奇怪了。我试过“relu”,“sigmoid”,“tanh”等等。
我的问题是,为什么?激活函数在搞乱预测的单层中到底在做什么?我使用了Tensorflow 2.0
发布于 2020-06-29 16:07:36
目前,您正在学习一个线性函数。因为它可以用一个神经元来描述,你只需要一个神经元来学习它的功能。另一方面,激活函数是:
学习和理解输入变量和响应变量之间的复杂非线性复杂函数映射。它为我们的网络引入了非线性特性.它们的主要目的是将an中节点的输入信号转换为输出信号。该输出信号现在用作堆栈中下一层的输入。
因此,由于这里只有一个神经元(具体情况),所以不需要将值传递给下一个层。换句话说,所有隐藏层、输入层和输出层都合并在一起。因此,激活函数对您的情况没有帮助。除非你想根据神经元的输出做出决定。
https://stackoverflow.com/questions/62641394
复制相似问题