tensorflow.nn.softmax()正在从模型内部生成错误的值



为什么tf.nn.softmax((在模型内部给出错误的值?但是,当我在返回的logits上从模型外部手动执行softmax时,它正在正常运行。

beta = np.random.random((4,1))
inputs = tf.keras.Input(shape=(4,), dtype="float32")
beta = tf.constant(beta, dtype="float32")
utility = tf.matmul(inputs, beta)
logits = tf.reshape(utility,[-1])
probabilities = tf.nn.softmax(logits)
model = tf.keras.Model(inputs=inputs, outputs=[logits, probabilities], name="Test")
valX = np.ones((50,4))
logits, probabilities = model.predict(valX)
tf.nn.softmax(logits).numpy()
array([0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02,
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02,
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02,
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02,
0.02, 0.02, 0.02, 0.02, 0.02, 0.02], dtype=float32)
probabilities
array([0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.03125   , 0.03125   , 0.03125   ,
0.03125   , 0.03125   , 0.05555556, 0.05555556, 0.05555556,
0.05555556, 0.05555556, 0.05555556, 0.05555556, 0.05555556,
0.05555556, 0.05555556, 0.05555556, 0.05555556, 0.05555556,
0.05555556, 0.05555556, 0.05555556, 0.05555556, 0.05555556],
dtype=float32)

logits,probabilities=model.prdict(valX,batch_size=50(将解决问题。在这种情况下,inputs.shape[0]==50,并且softmax是在原始轴=0上计算的,跨越输入样本的数量。

相关内容

最新更新