我遵循了一个关于使用 Python 和 Tensorflow 的图像分类器的教程。
我现在正在尝试将深度学习应用于自定义情况。我制作了一个卖家/买家模拟程序,客户按照自己的意愿购买石头。石头有颜色、大小和曲线百分比。石头越接近客户的期望值,客户能够支付的就越多。对于卖家来说,石头越稀有,价格就应该越高。然后,该程序生成 100.000 次购买的石头,为神经网络提供数据,该网络将试图击败其他卖家。数据集看起来像这样:
我现在正在尝试创建我的神经网络。在教程中,他使用了两个具有 relu 激活函数和 MaxPooling2D 的 Conv2D 层,然后是 Flatten 层、Dense 层,最后是另一个具有 sigmoid 激活函数的 Dense 层。
在阅读了一些文档后,我发现 Conv2D 层是针对矩阵的,但我的数据已经是平坦的,所以我更喜欢只使用 Dense 层。
我的第一个问题是:我的神经网络是否需要具有这样的 relu 函数的密集层:
model.add(Dense(64, activation='relu', input_dim(3)))
如果我的程序只产生正值?
我的第二个问题是:我的神经网络是否需要一个 sigmoid 函数,如果我已经对我的数据进行了标准化,通过像这样划分它们使它们介于 0 和 1 之间?:
X[:,0] /= 256.0
X[:,1] /= 50.0
X[:,2] /= 100.0
这些值是每列的最大值。那么我需要一个 sigmoid 函数吗?
实际上我的神经网络是这样的:
model = Sequential()
model.add(Dense(64, activation='relu', input_dim(3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
但我对我的模型的效率感到困惑。我的神经网络可以工作吗?如果没有,我必须使用什么样的层和激活函数?