mmdetection初学问题(个人)

目录

一、TypeError:


1、(已解决)数据集json文件格式错误:缺少{ } ]等符号、缺少categories类

TypeError: __init__() missing 2 required positional arguments: 'doc' and 'pos'


File "D:\Yan_jiu\Anaconda3\envs\mmdet\lib\site-packages\pycocotools\coco.py", line 170, in getCatIds
cats = self.dataset['categories']
KeyError: 'categories'

2、

TypeError: RevCol: __init__() got an unexpected keyword argument 'pretrained'

3、(已解决)coco.py和实际json中的类别必须一致

仅修改coco数据集中的分类,实际分类不变。

data['category_id'] = self.cat_ids[label]

IndexError: list index out of range

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,这里是使用online_shopping_10_cats数据集训练以上模型的train函数以及test函数: ```python import numpy as np import pandas as pd import string from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from sklearn.model_selection import train_test_split # 加载数据集 df = pd.read_csv("online_shopping_10_cats.csv") df = df[["Review Text", "Cat1"]] df = df.dropna() # 数据预处理 stop_words = set(stopwords.words('english') + list(string.punctuation)) def preprocess_text(text): tokens = word_tokenize(text.lower()) tokens = [t for t in tokens if t not in stop_words] return " ".join(tokens) df["Review Text"] = df["Review Text"].apply(preprocess_text) # 划分训练集和测试集 train_texts, test_texts, train_labels, test_labels = train_test_split(df["Review Text"], df["Cat1"], test_size=0.2) # 构建词典 word_to_index = {} index_to_word = {} for i, word in enumerate(set(" ".join(train_texts).split())): word_to_index[word] = i index_to_word[i] = word # 将文本转换为数字序列 def text_to_sequence(text): seq = [] for word in text.split(): seq.append(word_to_index[word]) return seq train_sequences = [text_to_sequence(text) for text in train_texts] test_sequences = [text_to_sequence(text) for text in test_texts] # 将标签转换为数字 label_to_index = {} index_to_label = {} for i, label in enumerate(set(train_labels)): label_to_index[label] = i index_to_label[i] = label train_labels = [label_to_index[label] for label in train_labels] test_labels = [label_to_index[label] for label in test_labels] # 定义 RNN 模型 class RNN: def __init__(self, input_size, hidden_size, output_size): self.input_size = input_size self.hidden_size = hidden_size self.output_size = output_size # 初始化参数 self.Wxh = np.random.randn(hidden_size, input_size) * 0.01 # 输入层到隐藏层的权重矩阵 self.Whh = np.random.randn(hidden_size, hidden_size) * 0.01 # 隐藏层到隐藏层的权重矩阵 self.Why = np.random.randn(output_size, hidden_size) * 0.01 # 隐藏层到输出层的权重矩阵 self.bh = np.zeros((hidden_size, 1)) # 隐藏层偏置 self.by = np.zeros((output_size, 1)) # 输出层偏置 # 初始化隐藏状态 self.h = np.zeros((hidden_size, 1)) def forward(self, x): # 更新隐藏状态 self.h = np.tanh(np.dot(self.Wxh, x) + np.dot(self.Whh, self.h) + self.bh) # 计算输出 y = np.dot(self.Why, self.h) + self.by # 返回输出和隐藏状态 return y, self.h def backward(self, x, y, target, learning_rate): # 计算输出误差 dy = y - target # 计算隐藏状态误差 dh = np.dot(self.Why.T, dy) * (1 - self.h ** 2) # 计算权重和偏置的梯度 dWhy = np.dot(dy, self.h.T) dby = np.sum(dy, axis=1, keepdims=True) dWxh = np.dot(dh, x.T) dWhh = np.dot(dh, self.h.T) dbh = np.sum(dh, axis=1, keepdims=True) # 更新权重和偏置 self.Why -= learning_rate * dWhy self.by -= learning_rate * dby self.Wxh -= learning_rate * dWxh self.Whh -= learning_rate * dWhh self.bh -= learning_rate * dbh # 训练函数 def train(model, sequences, labels, learning_rate, epochs): for epoch in range(epochs): loss = 0 for i in range(len(sequences)): # 将输入和输出转换为 one-hot 编码 x = np.zeros((len(sequences[i]), model.input_size)) for j, index in enumerate(sequences[i]): x[j, index] = 1 y = np.zeros((model.output_size, 1)) y[labels[i]] = 1 # 前向传播 output, hidden = model.forward(x.T) # 计算损失 loss += np.sum((output - y) ** 2) # 反向传播 model.backward(x.T, output, y, learning_rate) # 输出每个 epoch 的损失 print("Epoch {}/{} loss: {}".format(epoch + 1, epochs, loss / len(sequences))) # 测试函数 def test(model, sequences, labels): correct = 0 for i in range(len(sequences)): # 将输入转换为 one-hot 编码 x = np.zeros((len(sequences[i]), model.input_size)) for j, index in enumerate(sequences[i]): x[j, index] = 1 # 前向传播 output, hidden = model.forward(x.T) # 获取预测结果 prediction = np.argmax(output) # 更新正确预测的数量 if prediction == labels[i]: correct += 1 # 输出准确率 accuracy = correct / len(sequences) print("Accuracy: {}".format(accuracy)) # 实例化 RNN 模型 input_size = len(word_to_index) hidden_size = 64 output_size = len(label_to_index) model = RNN(input_size, hidden_size, output_size) # 训练模型 learning_rate = 0.01 epochs = 10 train(model, train_sequences, train_labels, learning_rate, epochs) # 测试模型 test(model, test_sequences, test_labels) ``` 在训练模型时,我们使用了 online_shopping_10_cats 数据集,并对数据进行了预处理、划分训练集和测试集、构建词典等操作。在训练过程中,我们使用了前向传播和反向传播算法来更新模型的权重和偏置,并输出了每个 epoch 的损失。在测试模型时,我们使用了测试集,计算出了模型的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值