【发布时间】:2022-01-08 09:23:36
【问题描述】:
我正在使用 Tensorflow 1.15 和 Keras 2.3.1 我的 Keras 模型有这样的代码:
model = keras.Sequential()
model.add(L.InputLayer(batch_input_shape= (None, 768)))
model.add(L.Dense(input_shape = (None,768), activation='relu', units = 256))
model.add(Dropout(0.25))
model.add(L.Dense(input_shape = (None,256), activation='relu', units = 128))
model.add(Dropout(0.25))
model.add(L.Dense(input_shape=(None,128), activation='softmax', units = len(tensor_val_cat[0])))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy', precision, recall, f1])
正在为每个样本预测这一点,而我在最后一个 Dense 层中使用 softmax 激活:
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)
但是当我将最后一次激活从 softmax 更改为 reLU 时,它会变得更好:
array([ 22.15598 , 11.37785 , 4.0738773, 82.95521 , 0. ,
0. , 0. , 18.631542 , 0. , 5.5782046,
0. , 4.9239693, 0. , 16.169178 , 0. ,
6.9248867, 8.373851 , 8.884083 , 9.291541 , 0. ,
0. , 7.2818174, 0. , 0. , 6.06402 ,
12.253789 , 5.980045 , 6.226884 , 8.512158 , 7.8921595,
13.949636 , 7.111844 , 0. , 30.935558 , 0. ,
18.647184 , 0. , 8.561647 , 0. , 10.515696 ,
10.424169 , 9.935862 , 9.651736 , 0. , 0. ,
8.253851 , 26.623386 , 21.973936 , 17.13469 , 0. ,
18.480967 , 0. , 4.4326754, 9.894943 , 0. ,
20.798775 , 3.174389 , 6.4419975, 19.948698 , 5.1431727,
7.7155123, 20.939203 , 0. , 17.534533 , 5.989612 ,
10.36599 , 8.2254505, 0. , 13.186766 , 11.333556 ,
14.58358 , 12.923845 , 0. , 3.8745575, 6.7094135,
24.11962 , 0. , 9.189409 , 0. , 0. ,
0. , 6.585493 , 24.013597 , 14.495815 , 0. ,
6.1411734, 49.32834 , 25.741114 , 11.39783 , 12.999501 ,
16.318121 , 0. , 15.020708 , 0. , 11.767337 ,
260.82144 , 28.074688 , 5.5710874, 8.066694 , 11.450023 ,
0. , 7.5654263, 17.537619 , 0. , 18.570484 ,
3.9268994, 9.846983 , 54.34089 , 6.3504252, 0. ,
12.469551 , 11.262119 , 81.61232 , 0. , 8.149481 ,
0. , 10.952655 , 18.77889 , 45.96867 , 25.36038 ,
0. , 0. , 0. , 10.455843 , 0. ,
39.179607 , 0. , 6.2759237, 18.627535 , 0. ,
3.2353485, 0. , 0. , 15.829307 , 11.45084 ,
6.2554755, 90.0754 , 15.144176 , 0. , 15.053744 ,
0. , 7.800592 , 11.731603 , 0. , 0. ,
0. , 8.28636 , 0. , 0. , 0. ,
53.148182 , 0. , 5.1440187, 0. , 63.715683 ,
32.42369 , 0. , 18.376951 , 13.3018875, 0. ,
0. , 0. , 3.497302 , 3.9504528, 7.3174777,
0. , 6.7174683, 11.641777 , 5.5688257, 0. ,
0. , 11.408187 , 9.692002 , 19.378729 , 0. ,
11.024126 , 11.887186 , 5.125866 , 0. , 0. ,
15.08582 , 0. , 33.485287 , 23.441591 , 10.062655 ,
0. , 8.631276 , 0. , 13.220199 , 0. ,
5.132385 , 0. , 0. , 10.135473 , 13.213521 ,
0. , 12.063043 , 12.336954 , 7.578767 , 0. ,
4.895108 , 27.40385 , 6.0983057, 2.5386598, 24.318102 ,
14.043896 , 0. , 10.418289 , 5.761671 , 17.748152 ,
5.8953934, 0. , 0. , 0. , 9.80458 ,
0. , 20.902594 , 31.065573 , 13.040765 , 8.419372 ,
0. , 11.227969 , 0. , 5.400335 , 0. ,
0. , 5.159615 , 11.675414 , 0. , 0. ,
8.022585 , 12.005584 , 4.038471 , 6.218788 , 10.806794 ,
15.874523 , 11.118925 , 0. , 7.7477336, 0. ,
0. , 7.1560225, 0. , 8.95097 , 0. ,
12.333616 , 11.627193 , 5.4876437, 25.533556 , 5.655847 ,
0. , 14.226913 , 5.2383256, 0. , 5.673967 ,
0. , 5.9973536, 0. , 12.03303 , 6.4873867,
3.6789234, 4.8231483, 0. , 21.4692 , 0. ,
0. , 0. , 0. , 12.463381 , 0. ,
0. , 0. , 10.32079 , 19.267895 , 6.7940717,
3.1542706, 0. , 0. , 0. , 10.24344 ,
11.1568 , 3.5449536, 22.421698 , 0. , 0. ,
7.1022887, 9.147839 , 0. , 0. , 14.933947 ,
6.061274 , 6.5337996, 5.5994735, 0. , 2.0698977,
25.453054 , 0. , 6.533775 , 3.5728502, 13.730647 ],
dtype=float32)
我也想使用 softmax 激活,请问您能帮我解决上述问题吗?
【问题讨论】:
-
你不能简单地从 softmax 更改为 ReLU 而不将损失更改为
mae。 Softmax 用于多类分类,ReLU 用于回归问题。您在输出中使用 predict_classes 或 np.argmax 吗? -
为什么这是一个问题,因为它是一个有效的 softmax 输出?我没有看到任何问题。
标签: python tensorflow keras softmax