鉴于PyTorch中的代码如下,Keras的等价物是什么?
class Network(nn.Module):
def __init__(self, state_size, action_size):
super(Network, self).__init__()
# Inputs = 5, Outputs = 3, Hidden = 30
self.fc1 = nn.Linear(5, 30)
self.fc2 = nn.Linear(30, 3)
def forward(self, state):
x = F.relu(self.fc1(state))
outputs = self.fc2(x)
return outputs
是这个吗?
model = Sequential()
model.add(Dense(units=30, input_dim=5, activation='relu'))
model.add(Dense(units=30, activation='relu'))
model.add(Dense(units=3, activation='linear'))
还是这个?
model = Sequential()
model.add(Dense(units=30, input_dim=5, activation='linear'))
model.add(Dense(units=30, activation='relu'))
model.add(Dense(units=3, activation='linear'))
或者是吗?
model = Sequential()
model.add(Dense(units=30, input_dim=5, activation='relu'))
model.add(Dense(units=30, activation='linear'))
model.add(Dense(units=3, activation='linear'))
谢谢
2 回答
根据我的知识,它们都不正确 . 正确的Keras等效代码将是:
模型将采用形状(,5)的输入数组和形状(,30)的输出数组 . 而不是
input_shape
,您也可以使用input_dim
.input_dim=5
相当于input_shape=(5,)
.在第一个图层之后,您不再需要指定输入的大小 . 此外,如果您未指定任何激活内容,则不会应用任何激活(相当于线性激活) .
另一种选择是:
希望这是有道理的!
看起来像一个
如果您正在尝试将Pytorch模型转换为Keras模型,您还可以尝试使用Pytorch2Keras转换器 .
它支持基础层,如Conv2d,Linear,Activations,Element-wise操作 . 所以,我已经转换了ResNet50,错误为1e-6 .