update directory structure
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import torch
|
||||
import torch.nn as nn
|
||||
|
||||
class AlphaGoModel(nn.Module):
|
||||
def __init__(self, input_shape, is_policy_net=False,
|
||||
# num_filters=192, first_kernel_size=5, other_kernel_size=3):
|
||||
num_filters=192, first_kernel_size=5, other_kernel_size=3, num_classes=None):
|
||||
super(AlphaGoModel, self).__init__()
|
||||
|
||||
layers = [
|
||||
nn.Conv2d(input_shape[0], num_filters, first_kernel_size, padding=first_kernel_size//2),
|
||||
nn.ReLU()
|
||||
]
|
||||
|
||||
for i in range(2, 12):
|
||||
layers.extend([
|
||||
nn.Conv2d(num_filters, num_filters, other_kernel_size, padding=other_kernel_size//2),
|
||||
nn.ReLU()
|
||||
])
|
||||
|
||||
if is_policy_net:
|
||||
assert num_classes is not None, "num_classes must be provided for policy network"
|
||||
layers.extend([
|
||||
nn.Conv2d(num_filters, 1, kernel_size=1, padding=0),
|
||||
# nn.Softmax(dim=1),
|
||||
nn.Flatten()
|
||||
])
|
||||
else:
|
||||
layers.extend([
|
||||
nn.Conv2d(num_filters, num_filters, other_kernel_size, padding=other_kernel_size//2),
|
||||
nn.ReLU(),
|
||||
nn.Conv2d(num_filters, 1, kernel_size=1, padding=0),
|
||||
nn.ReLU(),
|
||||
nn.Flatten(),
|
||||
nn.Linear(input_shape[1] * input_shape[2], 256),
|
||||
nn.ReLU(),
|
||||
nn.Linear(256, 1),
|
||||
nn.Tanh()
|
||||
])
|
||||
|
||||
self.model = nn.Sequential(*layers)
|
||||
|
||||
def forward(self, x):
|
||||
return self.model(x)
|
||||
|
||||
# Instantiate policy network
|
||||
# alphago_policy_model = AlphaGoModel(input_shape=(3, 19, 19), is_policy_net=True)
|
||||
alphago_policy_model = AlphaGoModel(input_shape=(3, 19, 19), is_policy_net=True, num_classes=361)
|
||||
|
||||
# Instantiate value network
|
||||
alphago_value_model = AlphaGoModel(input_shape=(3, 19, 19), is_policy_net=False)
|
||||
|
||||
Reference in New Issue
Block a user