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'))
ありがとう
私の知る限り、どれも正しく見えません。正しいKerasの同等のコードは次のようになります。
_model = Sequential()
model.add(Dense(30, input_shape=(5,), activation='relu'))
model.add(Dense(3))
_
model.add(Dense(30、input_shape =(5、)、activation = 'relu'))
モデルは、形状の入力配列(*、5)および形状の出力配列(*、30)を取ります。 _input_shape
_の代わりに、_input_dim
_を使用することもできます。 _input_dim=5
_はinput_shape=(5,)
と同等です。
model.add(Dense(3))
最初のレイヤーの後、入力のサイズを指定する必要はありません。さらに、アクティベーションに何も指定しない場合、アクティベーションは適用されません(線形アクティベーションと同等)。
別の選択肢は次のとおりです。
_model = Sequential()
model.add(Dense(30, input_dim=5))
model.add(Activation('relu'))
model.add(Dense(3))
_
うまくいけば、これは理にかなっています!
のように見えます
model = Sequential()
model.add(InputLayer(input_shape=input_shape(5,))
model.add(Dense(30, activation='relu')
model.add(Dense(3))
PytorchモデルをKerasモデルに変換しようとしている場合は、 Pytorch2Keras コンバーターを試すこともできます。
Conv2d、Linear、Activations、Element-wise操作などのベースレイヤーをサポートします。そのため、ResNet50をエラー1e-6で変換しました。