Моя задача — распознавание действий, где мои входные данные — ключевые точки медиапайпа. У меня 300 несбалансированных классов. Первые несколько классов содержат более 500 выборок, тогда как у большинства их меньше 20, поэтому я использую WeightedRandomSampler, чтобы справиться с этим дисбалансом. Но даже после этого точность моего обучения и проверки все еще остается низкой.
Я попробовал модель ниже, которая представляет собой модель MLP плюс GRU. Моя скорость обучения — 1e-06, шаг обучения — 10, размер пакета — 32. Примерно через несколько эпох точность не достигает 1%, и потери поезда и значения выходят на плато.
class MLP(nn.Module):
def __init__(self, num_classes, rnn_layers, hidden_size, fc_size):
super(MLP, self).__init__()
self.hidden_size = hidden_size
self.num_classes = num_classes
self.fc_size = fc_size
self.apply(self._init_weights)
self.fc_pre= nn.Sequential(
nn.Linear(201, 100),
nn.ReLU(),
nn.Dropout(p=0.2),
nn.Linear(100, fc_size),
nn.ReLU(),
nn.Dropout(p=0.2))
#Defines the number of features that define each element (time-stamp) of the input sequence
self.rnn = nn.GRU(input_size = 150,
hidden_size = 50,
num_layers = 2,
batch_first = True)
self.fc = nn.Linear(hidden_size, num_classes)
# initialize hidden state for RNN
def init_hidden(self, num_layers, batch_size):
return (torch.zeros(num_layers, batch_size, self.hidden_size).cuda(),
torch.zeros(num_layers, batch_size, self.hidden_size).cuda())
#inital hidden state made of zeros
def forward(self, inputs, hidden=None, steps=0):
length = len(inputs)
# print('inputs size')
# print(inputs[3].size())
#Input data: RNN should have 3 dimensions. (Batch Size, Sequence Length and Input Dimension (the number of expected features which is 201)
fs = torch.zeros(inputs[0].size(0), length, self.rnn.input_size).cuda()
for i in range(length):
f = inputs[i]
#flattens the tensor
f = f.view(f.size(0), -1)
#print(f.size())
f = self.fc_pre(f)
# stores the tensor f in the sha pe [fs.size(0), fs.size(2)] to each “row” in fs to prepare for learning the sequence in RNN
fs[:, i, :] = f
# print('fs')
# print(fs.size())
#outputs : batch size, seq legnth, hidden size
outputs, hidden = self.rnn(fs, hidden)
#print(outputs.size())
#the training code applies crossentropyloss as criterion which also applies softmax to the output so I don't have to use softmax here
outputs = self.fc(outputs)
#print(outputs)
#print(outputs.size())
return outputs
def _init_weights(self, module):
if isinstance(module, nn.Linear):
module.weight.data.uniform_(mean=0.0, std=1.0)
if module.bias is not None:
module.bias.data.zero_
Моя задача — распознавание действий, где мои входные данные — ключевые точки медиапайпа. У меня 300 несбалансированных классов. Первые несколько классов содержат более 500 выборок, тогда как у большинства их меньше 20, поэтому я использую WeightedRandomSampler, чтобы справиться с этим дисбалансом. Но даже после этого точность моего обучения и проверки все еще остается низкой. Я попробовал модель ниже, которая представляет собой модель MLP плюс GRU. Моя скорость обучения — 1e-06, шаг обучения — 10, размер пакета — 32. Примерно через несколько эпох точность не достигает 1%, и потери поезда и значения выходят на плато. [code]class MLP(nn.Module):
self.fc_pre= nn.Sequential( nn.Linear(201, 100), nn.ReLU(), nn.Dropout(p=0.2), nn.Linear(100, fc_size), nn.ReLU(), nn.Dropout(p=0.2)) #Defines the number of features that define each element (time-stamp) of the input sequence self.rnn = nn.GRU(input_size = 150, hidden_size = 50, num_layers = 2, batch_first = True) self.fc = nn.Linear(hidden_size, num_classes)
# initialize hidden state for RNN def init_hidden(self, num_layers, batch_size): return (torch.zeros(num_layers, batch_size, self.hidden_size).cuda(), torch.zeros(num_layers, batch_size, self.hidden_size).cuda())
#inital hidden state made of zeros def forward(self, inputs, hidden=None, steps=0): length = len(inputs) # print('inputs size') # print(inputs[3].size()) #Input data: RNN should have 3 dimensions. (Batch Size, Sequence Length and Input Dimension (the number of expected features which is 201) fs = torch.zeros(inputs[0].size(0), length, self.rnn.input_size).cuda()
for i in range(length): f = inputs[i] #flattens the tensor f = f.view(f.size(0), -1) #print(f.size()) f = self.fc_pre(f)
# stores the tensor f in the sha pe [fs.size(0), fs.size(2)] to each “row” in fs to prepare for learning the sequence in RNN fs[:, i, :] = f # print('fs') # print(fs.size())
#the training code applies crossentropyloss as criterion which also applies softmax to the output so I don't have to use softmax here outputs = self.fc(outputs)
#print(outputs) #print(outputs.size())
return outputs
def _init_weights(self, module): if isinstance(module, nn.Linear): module.weight.data.uniform_(mean=0.0, std=1.0) if module.bias is not None: module.bias.data.zero_
[/code] Есть какие-нибудь предложения? Заранее спасибо
Я создаваю модель Seedencetransformer ('All-Minilm-L6-V2'), используя словарь (JSON) с названием Category_Descriptions в качестве набора данных.
Ниже приведен Структура данных Category_descriptions :
{
CategoryA : {
CategorySearch : Description...
Я создаваю модель Seedencetransformer ('All-Minilm-L6-V2'), используя словарь (JSON) с названием Category_Descriptions в качестве набора данных.
Ниже приведен Структура данных Category_descriptions :
{
CategoryA : {
CategorySearch : Description...
Я скопировал пример кода прямо с официального сайта Keras и отредактировал его, чтобы создать модель машинного обучения.
Я использую Google Colab для своего кода.
Ссылка: https ://keras.io/examples/vision/image_classification_from_scratch/
import...
Я пытаюсь построить свою первую RNN с помощью TensorFlow.NET, но получаю ошибку.
Вот мой код:
Tensors input = tf.keras.Input(shape: new Shape(1, InputVectorSize));
ILayer gruLayer = tf.keras.layers.GRU(units: 32, return_sequences: false, stateful:...
Я обучаю многозадачную модель глубокого обучения с использованием Tensorflow/Keras для классификации автомобильных изображений по двум целям:
L2 Task: Binary classification — Car vs. No Car
L1 Task: Binary classification — among car images only,...