Pytorch到Keras代码等价

Mil*_*lvi 6 keras pytorch

鉴于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
Run Code Online (Sandbox Code Playgroud)

是这个吗?

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'))
Run Code Online (Sandbox Code Playgroud)

还是这个?

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'))
Run Code Online (Sandbox Code Playgroud)

或者是吗?

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'))
Run Code Online (Sandbox Code Playgroud)

谢谢

Was*_*mad 8

根据我的知识,它们都不正确.正确的Keras等效代码将是:

model = Sequential()
model.add(Dense(30, input_shape=(5,), activation='relu')) 
model.add(Dense(3)) 
Run Code Online (Sandbox Code Playgroud)

model.add(Dense(30,input_shape =(5,),activation ='relu'))

模型将采用形状(*,5)的输入数组和形状(*,30)的输出数组.而不是input_shape,你也可以使用input_dim.input_dim=5相当于input_shape=(5,).

model.add(密集(3))

在第一个图层之后,您不再需要指定输入的大小.此外,如果您未指定任何激活内容,则不会应用任何激活(相当于线性激活).


另一种选择是:

model = Sequential()
model.add(Dense(30, input_dim=5)) 
model.add(Activation('relu'))
model.add(Dense(3)) 
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的!