下面我陈述了我的模型在Keras中实现的架构:
ann = tf.keras.models.Sequential()
ann.add(tf.keras.layers.Dense(units=6, activation = "relu"))
ann.add(tf.keras.layers.Dense(units=6, activation = "relu"))
ann.add(tf.keras.layers.Dense(units=1, activation = "sigmoid"))
ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
ann.fit(x_train, y_train, batch_size = 32, epochs = 100)
字符串
该模型给出了以下混淆矩阵,其中输入数据是12个预测因子,目标是二进制的。
[[1498 97]
[ 184 221]]
型
我用pytorch重新实现了它
class Net(nn.Module):
def __init__(self,n_inputs):
# Define all the parameters of the net
super(Net, self).__init__()
self.fc1 = nn.Linear(n_inputs, 6)
self.fc2 = nn.Linear(6, 6)
self.fc3 = nn.Linear(6, 1)
def forward(self, x):
# Do the forward pass
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = torch.sigmoid(self.fc3(x))
return x
型
然后我得到以下混淆矩阵:
[[1594 0]
[ 406 0]]
型
我肯定我错过了一些东西,但似乎我的实现是正确的,但我不知道我错过了什么。
1条答案
按热度按时间brccelvz1#
Keras和Pytorch之间有很多不同之处,例如内核初始化器,偏差初始化器,随机种子,优化器的参数和超参数。
例如,引用两个文档,keras密集层的初始化器是glorot_uniform和zeros:Keras Dense
字符串
而Pytorch linear的初始化器不是:Pytorch Linear