作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个神经网络来预测 63 个输入中的 3 个输出值。我有一个数据集,其中包含两个形状为 [8100, 63] 和 [8100, 3] 的 numpy 数组,但是当我尝试将它们提供给 Keras 时,模型不会收敛,均方误差在 10^11 的范围内。
我用来计算数据的函数没有任何非线性属性,所以我首先认为一层或两层就足够了。对于三层,MSE 仍然在 10^10 的范围内,我不确定我做错了什么。
回归应该返回三个可以大于 1 的绝对值 - 这就是我没有使用 softmax 层的原因。
如果您有任何意见或帮助,我将不胜感激!
import numpy as np
from keras.models import *
from keras.layers import Dense
from keras import optimizers
from keras.utils import plot_model
np.random.seed(7)
#Define Input
tf_features_64 = np.load("IN.npy")
tf_labels_64 = np.load("OUT.npy")
tf_features_32 = tf_features_64.astype(np.float32)
tf_labels_32 = tf_labels_64.astype(np.float32)
X = tf_features_32
Y = tf_labels_32
#create Layers
visible = Input(shape=(63,))
x = Dense(100, activation='relu')(visible)
x = Dense(100, activation='relu')(x)
x = Dense(100, activation='relu')(x)
x = Dense(70, activation='relu')(x)
x = Dense(30, activation='relu')(x)
output = Dense(3)(x)
Optimizer = optimizers.adam(lr=0.001)
model = Model(inputs=visible, outputs = output)
model.compile(optimizer=Optimizer,
loss='categorical_crossentropy',
metrics=['mse']
)
model.fit(X, Y, epochs=400, batch_size=300, shuffle=True)
print(model.summary)
最佳答案
当我们使用神经网络进行分类时,我们应该在最后一层使用 softmax
和 categorical_crossentropy
loss。
output = Dense(3, activation='softmax')(x)
model.compile(optimizer=Optimizer,
loss='categorical_crossentropy')
对于回归,我们应该使用带有mse
损失的线性
输出
output = Dense(3)(x)
model.compile(optimizer=Optimizer,
loss='mse')
您使用categorical_crossentropy
作为损失函数,使用mse
作为指标
model.compile(optimizer=Optimizer,
loss='categorical_crossentropy',
metrics=['mse']
)
将损失函数更改为mse
model.compile(optimizer=Optimizer,
loss='mse')
关于python - 我的 Keras 多输出神经网络是否因为没有足够的层数而未收敛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51457286/
我是一名优秀的程序员,十分优秀!