PyTorch�̏K���́A�V���v���ȃj���[�����l�b�g���[�N�iNN�j�́A�܂���1�����̃j���[�������������邱�Ƃ���n�߂Ă݂悤�B�j���[�����̃��f����`����n�߁A�t�H���[�h�v���p�Q�[�V�����ƃo�b�N�v���p�Q�[�V�����Ƃ������Œ���K�v�ȁu�j�v�ƂȂ��{�@�\�ɍi���ĉ���B���������ɂ��Ă��ȒP�ɐG���B
���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@�l�C�}�㏸�́uPyTorch�v���g�������B�����l���āAPyTorch�̌����`���[�g���A�����J���Ċw�K���n�߂Ă݂��A�Ƃ����l�͏��Ȃ��Ȃ����낤�B�������A���܂��Ă��܂�����A�Ȃ��Ȃ��i�܂Ȃ�������A�Ƃ����l�����Ȃ��Ȃ��̂ł͂Ȃ����낤���B
�@�Ƃ����̂��A���������`���[�g���A���́A�ŏ��́u�e���\���v��������́iNumPy���C�N�Ȓ��ϓI��API�Ȃ̂Łj����Ȃ��Ƃ��Ă��A�����uAutograd�i���������j�v�A���̎����u�j���[�����l�b�g���[�N�v�c�c�ƌ������A�����Ȃ�uCNN�i��ݍ��݃j���[�����l�b�g���[�N�j�v�ɂ������ɂȂ��Ă��邩�炾�B�j���[�����l�b�g���[�N��f�B�[�v���[�j���O�̌o�������S�҂ɂƂ��āA���������������n�C���x���Ȏ��_����̉���́APyTorch�@�\���̂��̂��w�ԍۂ́u�����̖W���v�ɂȂ�₷�����낤�B�������������`���[�g���A����API�h�L�������g���p��ł�������Ă��Ȃ��A�Ƃ�����ǂ�����i���������ŋ߂́AChrome�u���E�U�[�����m���{��ɖ|��n�@�\���D�G�Ȃ̂ŁA�@�B�|��Ώ\���ɓǂ߂邪�j�B
�@PyTorch�͂킴�Ɓu����̕ǁv���������āA������x�̒m��������l�����������ė�����悤�Ɂu��O�����v���Ă���̂ł͂Ȃ����B�M���͂���Ȃӂ��ɂ��犴���Ă���B
�@������PyTorch�͂��傹��g�c�[���h�ɉ߂��Ȃ��B�����܂Ńc�[���Ƃ��đ����āuPyTorch�����p����͓̂���Ȃ��v�Ɩ{�A�ڂł͎咣�������B
�@PyTorch�͐��E�I�Ȑl�C�̂��ɂ́A���{��̕�����₷���`���[�g���A�����܂��قƂ�ǂȂ��B�����Ŗ{�A�ڂ́A���{��ɂ��`���[�g���A������L���Ƃ��āA�ł��邾���V���v���ȃj���[�����l�b�g���[�N���ނɂ��āAPyTorch�Ńj���[�����l�b�g���[�N�����p���邽�߂̍ŏd�v���Œ���̊�b�m�����ŒZ�Ő������Ă����i����{���̊�{��{�A�ڂ̑�1��`��3���3�{�ɂ܂Ƃ߂��j�B
�@�ǎ҂ɑz�肷��S�[���Ƃ��ẮAPyTorch�̊�{�I�Ȏ����p�^�[���𗝉����A�����I�ȃj���[�����l�b�g���[�N���f�B�[�v���[�j���O�̃R�[�h���v���ʂ�ɏ�����悤�ɂȂ邱�ƁA�Ƃ������B
�@�{�A�ڂ̓ǎґΏۂ́A�u�j���[�����l�b�g���[�N�̊�{���w���Ƃ����郌�x���v��z�肵�Ă���B��̓I�ɂ́A�A�ځwTensorFlow 2�{Keras�itf.keras�j�����x�̂����A���L�́u�d�g�ݗ����~�������v�̑O�ҁE���ҁE��҂�3�{��ǂ�ŁA���e�𗝉����Ă����ԂƂ���B
�@�Ⴆ�u�j���[�����v�u���������v�u�������v�u���z�v�u�m���I���z�~���@�iSGD�j�v�ƕ����āA�u���̊T�O��������Ȃ��v�Ƃ������ꍇ�ɂ́A��ɏ�L3�{�̋L���ɖڂ�ʂ��Ăق����B����3�{�̋L���ł́A�j���[�����l�b�g���[�N�̋�����}�Ŏ����Ȃ���A�d�g�݁i��Keras�ɂ��������@�j����₷���������Ă���̂ł����߂ł���B
�@�{�A�ڂł́APython�i�o�[�W����3.6�j�ƁA�f�B�[�v���[�j���O�̃��C�u�����uPyTorch�v�̍ŐV��1.4�𗘗p����B�܂��A�J������Google Colaboratory�i�ȉ��AColab�j��p����B
�@���������������n�߂悤�I
�@PyTorch�i�p�C�g�[�`�j�Ƃ́AFacebook���J�����Ă���I�[�v���\�[�X�̋@�B�w�K�i���Ƀf�B�[�v���[�j���O�j�̃��C�u�����ł���B���̑�\�I�ȓ�����3����������Ƃ���A�ȉ��̒ʂ肾�B
�@3�Ԗڂ����ɏd�v�ŁA�Ⴆ���f���̃t�H���[�h�v���p�Q�[�V�����i���`�d�j����if������for���[�v�Ȃǂ̐���t���[�������Ȃǂ��ē��I�Ɍv�Z�O���t��ύX����Ƃ��������Ƃ��\���B�Ƃ�킯NLP�iNatural Language Processing�F���R���ꏈ���j�̕���ł́A�����҂͂��܂��܂Ȓ����̕����P������K�v������̂ŁA�u���I�Ȍv�Z�O���t�v�@�\���K�v�s���ł���i�����ۂɕM�҂��uPyTorch���f�t�@�N�g�X�^���_�[�h�ɂȂ��Ă���v�Ə��߂ĕ������̂́ANLP�̕��삾�����j�B
�@�u���I�Ȍv�Z�O���t�v�͂������PyTorch�ȊO�̃��C�u�����ɂ����ڂ���Ă���A���̃��C�u�����ł́gDefine-by-Run�h�i���s���Ȃ����`����j��Eager Execution�i�������s�j�ȂǂƂ��Ă�Ă���B�Ⴆ��TensorFlow 2.0�ȍ~�ɂ�Eager Execution�����ڂ��ꂽ���A�u���I�Ȍv�Z�O���t�v�ׂ̍��Ȏg�������PyTorch�Ɉ���̒�������i�ƕM�҂͊����Ă���j�B
�@�{�A�ڂł́APyTorch�̊�b����C�萬�i�������j�ɏK�����Ă����B��̓I�ɂ́A���̗���Ő�������B
�@ �i1�j�j���[�����̃��f����`
�@ �i2�j�t�H���[�h�v���p�Q�[�V�����i���`�d�j
�@ �i3�j�o�b�N�v���p�Q�[�V�����i�t�`�d�j�Ǝ��������iAutograd�j
�@ �i4�jPyTorch�̊�b�F �e���\���ƃf�[�^�^
�@ �i5�j�f�[�^�Z�b�g�ƃf�[�^���[�_�[�iDataLoader�j
�@ �i6�j�f�B�[�v�j���[�����l�b�g�̃��f����`
�@ �i7�j�w�K�^�œK���i�I�v�e�B�}�C�U�j
�@ �i8�j�]���^���x����
�@�i1�j�`�i3�j��1�Z�b�g�ŁA1�̃j���[���������̃l�b�g���[�N���ނɁAPyTorch�̊j�ƂȂ镔�����������B���ꂪ��1��i�{�e�j�B
�@�i4�j�́A���{�i�I��PyTorch�ɂ��f�B�[�v���[�j���O�̎菇���w�Ԃɓ�����APyTorch�̊�b�����i�e���\���ƃf�[�^�^�j���`�[�g�V�[�g�`���ł����Ɗm�F���Ă��������B���ꂪ��2��B
�@�i5�j�`�i8�j���Ă�1�Z�b�g�ŁA4�w�̃f�B�[�v�j���[�����l�b�g���[�N���ނɁAPyTorch�ɂ���{�I�Ȏ����ƈ�A�̗�����������B���ꂪ��3��ł���B
�@��3��܂ł̃^�C�g���͉��L�̂悤�ɂȂ��Ă���B
�@�S���ǂݒʂ��Ƃ��Ȃ�̃{�����[���ɂȂ��Ă��邪�A�撣���čŌ�܂ŕt���Ă��Ăق����B
�@����ł́A�u�j���[�����v�̓��͂Əo�͂��s���R�[�h��PyTorch�ŋL�q���Ă݂悤�B
�@�{�A�ڂł́APyTorch�̃o�[�W����1.4�ȏ���K�{�Ƃ���i��Colab�ɃC���X�g�[���ς݂�PyTorch�o�[�W������������Ȃ��ꍇ�́Aimport torch; print('PyTorch', torch.__version__)�����s����A�o�[�W�������m�F�ł���j�B
�@�{�A�ڂ����p��O��Ƃ���Colab�Ƀf�t�H���g�ŃC���X�g�[���ς݂̃o�[�W�����́A�i2020�N2��4�����M���_�ŁjPyTorch 1.4.0�������B�o�[�W������1.4�ȏ��ł͂Ȃ��ꍇ�́A���C�u�����utorch�v���ŐV�łɃA�b�v�O���[�h���Ďg���K�v������B
�@���̂��߂ɂ́A���X�g1-0�Ɏ��������ꂩ�̃R�[�h�����s���āA�A�b�v�O���[�h�i�������̓C���X�g�[���j����B���s��ɁA�mRESTART RUNTIME�n�{�^�����\�������̂ŁA�N���b�N���ă����^�C�����ċN�����Ăق����B
#!pip install torch # ���C�u�����uPyTorch�v���C���X�g�[��
#!pip install torchvision # �摜�^�r�f�I������PyTorch�p�lj��p�b�P�[�W���C���X�g�[��
# �ŐV�o�[�W�����ɃA�b�v�O���[�h����ꍇ
!pip install --upgrade torch torchvision
# �o�[�W���������ăA�b�v�O���[�h����ꍇ
#!pip install --upgrade torch===1.4.0 torchvision===0.5.0
# �ŐV�o�[�W�������C���X�g�[������ꍇ
#!pip install torch torchvision
# �o�[�W���������ăC���X�g�[������ꍇ
#!pip install torch===1.4.0 torchvision===0.5.0
�@���X�g1-0�ł́A�utorchvision�v�p�b�P�[�W���A�b�v�O���[�h�i�������̓C���X�g�[���j���Ă��邪�A�{�A�ڂł͎g���Ă��Ȃ��B�����������ɃC���X�g�[�����Ă����Ȃ��ƁA�p�b�P�[�W�W���s�����ɂȂ邽�߁A�����ŃC���X�g�[�����Ă����K�v������B
�@PyTorch�̗��p�����������Ƃ��Ęb��i�߂悤�B�����ł́A2���̓��͂��t���āA������g�����v�Z���ʂ�1���̏o�͂Ƃ��Đ�������j���[�������A���f�����i�����f���v�j����B
�@���f���v�̂��߂ɁA���C�u�����uPyTorch�v�̃��C���p�b�P�[�W�ł���torch���C���|�[�g���A���̒��Œ�`����Ă���nn�p�b�P�[�W�i��NN�F�j���[�����l�b�g���[�N�@�\�j���g���āAtorch.nn.Module�N���X���p�������u�Ǝ��̔h���N���X�v�i����̖��O�́uNeuralNetwork�v�j���쐬����B�Ȃ��Atorch.nn.Module���u���W���[���v�ƋL�ڂ���ƁAPython�́u���W���[���v�ƕ���킵���̂ŁA�{�A�ڂł́utorch.nn.Module�v�ŕ\�L�ꂷ��B
�@���Ȃ݂�PyTorch�ɂ�郂�f���̍쐬���@�^�������͊������A��\�I�Ȃ��̂�������Ȃ�ȉ���3�ł���B
�@���f���v�̃R�[�h�́A���X�g1-1�̂悤�ɂȂ�B���Ȃ݂�PyTorch�ł́A�C���f���g�̃^�u��������4�ƂȂ��Ă���̂ŁA�{�A�ڂł͂���ɏ]�����ƂƂ���B�����ł͉��炩�̍��W����͂���Ɓi2�̓��͒l�j�A���ꂪ�F�Ȃ̂��I�����W�F�Ȃ̂��i1�̏o�͒l�j�𐄑�������̂Ƃ���i�F1.0�`�I�����W�F-1.0�͈̔́j�B
import torch # ���C�u�����uPyTorch�v��torch�p�b�P�[�W���C���|�[�g
import torch.nn as nn # �u�j���[�����l�b�g���[�N�v���W���[���̕ʖ���`
# �萔�i���f����`���ɕK�v�ƂȂ���́j
INPUT_FEATURES = 2 # ���́i�����j�̐��F 2
OUTPUT_NEURONS = 1 # �j���[�����̐��F 1
# �ϐ��i���f����`���ɕK�v�ƂȂ���́j
activation = torch.nn.Tanh() # ���������F tanh��
# �utorch.nn.Module�N���X�̃T�u�N���X���v�ɂ�郂�f���̒�`
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
# �w�ilayer�F���C���[�j���`
self.layer1 = nn.Linear( # Linear�́u�S�����w�v���w��
INPUT_FEATURES, # �f�[�^�i�����j�̓��̓��j�b�g��
OUTPUT_NEURONS) # �o�͌��ʂւ̏o�̓��j�b�g��
def forward(self, input):
# �t�H���[�h�p�X���`
output = activation(self.layer1(input)) # ���������͕ϐ��Ƃ��Ē�`
# �u�o�́����������i��n�w�i���́j�j�v�̌`���ŋL�q����B
# �w�ilayer�j���d�˂�ꍇ�́A���l�̋L�q�𑱂���悢�i��3��j�B
# �u�o�́ioutput�j�v�͎��̑w�ilayer�j�ւ́u���́iinput�j�v�Ɏg���B
# ����ł͓��͂��o�͂��ux�v�Ɠ����ϐ����ŋL�q����i����Ĉȉ��ł́ux�v�Ə����j
return output
# ���f���iNeuralNetwork�N���X�j�̃C���X�^���X��
model = NeuralNetwork()
model # ���f���̓��e���o��
�@�R�[�h���ɂł��邾�������̐����R�����g����ꂽ�̂ŁA�{���ł̓|�C���g�݂̂��������ƂƂ��悤�B
�@�܂�class NeuralNetwork(nn.Module):���A�utorch.nn.Module�N���X�̃T�u�N���X���v�̕����ł���B�N���X���ɂ́A
��2�̃��\�b�h����������Ă���BNeuralNetwork�N���X���C���X�^���X��������f���̍쐬�͊������B
�@���C���[�i�w�j���`���Ă���torch.nn.Linear�N���X�́A�u���̓f�[�^�ɑ��Đ��`�ϊ����s�����Ɓv���Ӗ����A��ʓI�ɂ��S�����w�iFully Connected Layer�j�ƌĂ�Ă���A���C�u�����ɂ���ẮuDense�w�v�iKeras�Ȃǁj��uAffine�w�v�iNeural Network Console�Ȃǁj�Ƃ��Ă�Ă���BLinear�N���X�̃R���X�g���N�^�[�i�����ɂ�__init__���j�̑�1�����Ƒ�2�����ɂ́A���̓��j�b�g���Əo�̓��j�b�g�����w�肷��悢�B
�@���������́Aactivation�ϐ��ɒ�`���Ă��邪�A�����tanh���i�}1-1�j���g�p����B
�@PyTorch�ł́A���������Ƃ���torch.nn�p�b�P�[�W���Ɉȉ��̂��̂��p�ӂ���Ă���A�����ɗ��p�ł���i���J�b�R������������͓̂��ɗL���Ȃ��́j�B
�@�u�p�����[�^�[�i���d�݂ƃo�C�A�X�j���������������v�Ƃ����j�[�Y�͍������낤�B�Ⴆ�u0�v��u��l���z�������_���l�v�ŏ���������Ȃǂ̕��@������B���̕��@�ɂ��ẮA��3��Ōf�ڂ��郊�X�g7-4�̖`���Ŏ����B
�@�����ł́u�����I�ȏ������v�ł͂Ȃ��u�C�ӂ̏����l�̎w��v���s�����@���������B�����l�̗�Ƃ��āA2�̓��́i�̐ڑ����j�ɂ�����d�݂Ɂu0.6�v�Ɓu-0.2�v���A�o�C�A�X�ɂ́u0.8�v��ݒ肷�邱�Ƃɂ��悤�i���X�g1-2�j�B
# �p�����[�^�[�i�j���[�����ւ̓��͂ŕK�v�ƂȂ���́j�̒�`
weight_array = nn.Parameter(
torch.tensor([[ 0.6,
-0.2]])) # �d��
bias_array = nn.Parameter(
torch.tensor([ 0.8 ])) # �o�C�A�X
# �d�݂ƃo�C�A�X�̏����l�ݒ�
model.layer1.weight = weight_array
model.layer1.bias = bias_array
# torch.nn.Module�S�̂̏�Ԃ������`���Ŏ擾
params = model.state_dict()
#params = list(model.parameters()) # ���̂悤�Ɏ擾���邱�Ƃ��\
params
# �o�͗�F
# OrderedDict([('layer1.weight', tensor([[ 0.6000, -0.2000]])),
# ('layer1.bias', tensor([0.8000]))])
�@���X�g1-2���|�C���g�������������B
�@���f���̃p�����[�^�[��torch.nn.Parameter�I�u�W�F�N�g�Ƃ��Ē�`����K�v������B����torch.nn.Parameter�N���X�̃R���X�g���N�^�[�ɂ́Atorch.Tensor�I�u�W�F�N�g�i�ȉ��A�e���\���j���w�肷��i���e���\���̎g�����̏ڍׂ́A��2��Ő�������j�B����torch.Tensor�N���X�̃R���X�g���N�^�[�ɂ́APython�̑��������X�g���w��ł���B���̃N���X�����p���āA�d�݂ƃo�C�A�X��weight_array��bias_array�Ƃ����ϐ��ɒ�`���Ă���B
�@��`�����d�݂�o�C�A�X�����f���ɓK�p����ɂ́A
���g�p����悢�B
�@�d�݂�o�C�A�X�Ƃ������p�����[�^�[�̏����擾���ĕ\���������ꍇ�ɂ́A�����f������.state_dict()���\�b�h���֗����B���̃��\�b�h���g���A�p�����[�^�[�Ƃ�����torch.nn.Module�S�̂̏�Ԃ��擾�ł���B
�@���Ȃ݂ɏ��擾�ł͂Ȃ��A�œK���̂��߂Ɏg���u���ۂ̃p�����[�^�[�̃I�u�W�F�N�g�v���擾����ɂ́A�����f������.parameters()���\�b�h���Ăяo���悢�B���̕��@�ɂ��ẮA��3��Ɍf�ڂ��郊�X�g7-1�Ŏ����B
�@�ȏ�Ń��f���̐v�͊������B���ۂɃT���v���f�[�^����͂��ăt�H���[�h�v���p�Q�[�V���������s���A���̏o�͌��ʂ��m�F���Ă݂悤�B
�@�t�H���[�h�v���p�Q�[�V�����A�܂胂�f���ɂ�鐄�_�^�\���́Amodel�I�u�W�F�N�g�����̂悤�ɌĂяo�������ł���i�����ɂ�__call__���\�b�h�̌Ăяo���j�B���̊��̈����ɂ́A�i�e���\���́j���͒l��n���悢�B�߂�l�Ƃ��āA�o�͌��ʁi�܂�\���l�j���e���\���l�ŕԂ����B
�@��������ۂɍs���Ă���̂����X�g2-1�ł���B
X_data = torch.tensor([[1.0, 2.0]]) # ���͂�����W�f�[�^�i1.0�A2.0�j
print(X_data)
# tensor([[1., 2.]]) �c�c�Ȃǂƕ\�������
y_pred = model(X_data) # ���̃��f���ɁA�f�[�^����͂��āA�o�͂�i���\���Fpredict�j
print(y_pred)
# tensor([[0.7616]], grad_fn=<TanhBackward>) �c�c�Ȃǂƕ\�������
�@���X�g2-1�̃|�C���g�������B
Copyright© Digital Advantage Corp. All Rights Reserved.