dlib 是否能够使用大规模数据集来训练目标检测器。我有超过 450K 的面部图像来训练面部检测器。是否可以使用 Dlib 或者我需要转向另一个替代方案?
Scikit 有CalibrateClassifierCV,它允许我们在特定的 X、y 对上校准我们的模型。它还明确指出data for fitting the classifier and for calibrating it must be disjoint.
如果它们必须是不相交的,那么用以下方法训练分类器是否合法?
model = CalibratedClassifierCV(my_classifier)
model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
我担心使用相同的训练集会违反规则disjoint data。另一种选择可能是有一个验证集
my_classifier.fit(X_train, y_train)
model = CalibratedClassifierCV(my_classifier, cv='prefit')
model.fit(X_valid, y_valid)
Run Code Online (Sandbox Code Playgroud)
其缺点是留下的训练数据较少。另外,如果CalibrateClassifierCV应该只适合适合不同训练集的模型,为什么它的默认选项是cv=3,它也适合基本估计器?交叉验证是否自行处理不相交规则?
问题:CalibrateClassifierCV 的正确使用方法是什么?
python classification calibration training-data scikit-learn
我想知道是否可以在预定义的网格中使用随机搜索。例如,我的网格有alphaand lambdaforglmnet方法。alpha介于 0 和 1 之间,lambda介于 -10 到 10 之间。我想使用随机搜索 5 次来随机尝试此范围内的点。我为网格搜索编写了以下代码,它工作正常,但我无法修改它以进行有限的随机搜索。
rand_ctrl <- trainControl(method = "repeatedcv", repeats = 5,
search = "random")
grid <- expand.grid(alpha=seq(0,1,0.1),lambda=seq(-10,10,1)) # I think this should be modified
rand_search <- train(Response ~ ., data = train_dat,
method = "glmnet",
## Create 20 random parameter values
metric = "RMSE",
tuneLength = 5,
preProc = c("scale"),
tuneGrid = grid,
trControl = rand_ctrl)
Run Code Online (Sandbox Code Playgroud) 当我尝试使用 metrics.roc_auc_score 时,我得到ValueError: multiclass format is not supported.
import lightgbm as lgb
from sklearn import metrics
def train_model(train, valid):
dtrain = lgb.Dataset(train, label=y_train)
dvalid = lgb.Dataset(valid, label=y_valid)
param = {'num_leaves': 64, 'objective': 'binary',
'metric': 'auc', 'seed': 7}
print("Training model!")
bst = lgb.train(param, dtrain, num_boost_round=1000, valid_sets=[dvalid],
early_stopping_rounds=10, verbose_eval=False)
valid_pred = bst.predict(valid)
print('Valid_pred: ')
print(valid_pred)
print('y_valid:')
print(y_valid)
valid_score = metrics.roc_auc_score(y_valid, valid_pred)
print(f"Validation AUC score: {valid_score:.4f}")
return bst
bst = train_model(X_train_final, X_valid_final)
Run Code Online (Sandbox Code Playgroud)
valid_pred 和 y_valid 是:
Training model!
Valid_pred:
[1. 1. …Run Code Online (Sandbox Code Playgroud) 我正在训练一个序列到序列(seq2seq)模型,并且我有不同的值来训练input_sequence_length.
对于值10和15,我得到了可以接受的结果,但是当我尝试使用 进行训练时20,我遇到了内存错误,因此我将训练切换为批量训练,但模型过度拟合并且验证损失爆炸,即使使用累积的梯度,我也得到了相同的行为,所以我正在寻找提示并导致更准确的更新方法。
这是我的训练函数(仅包含批处理部分):
if batch_size is not None:
k=len(list(np.arange(0,(X_train_tensor_1.size()[0]//batch_size-1), batch_size )))
for epoch in range(num_epochs):
optimizer.zero_grad()
epoch_loss=0
for i in list(np.arange(0,(X_train_tensor_1.size()[0]//batch_size-1), batch_size )): # by using equidistant batch till the last one it becomes much faster than using the X.size()[0] directly
sequence = X_train_tensor[i:i+batch_size,:,:].reshape(-1, sequence_length, input_size).to(device)
labels = y_train_tensor[i:i+batch_size,:,:].reshape(-1, sequence_length, output_size).to(device)
# Forward pass
outputs = model(sequence)
loss = criterion(outputs, labels)
epoch_loss+=loss.item()
# Backward and optimize
loss.backward() …Run Code Online (Sandbox Code Playgroud) python machine-learning training-data neural-network pytorch
我知道问题不可能出在数据集上,因为我见过其他项目使用相同的数据集。这是我的数据预处理代码:
import pandas as pd
dataset = pd.read_csv('political_tweets.csv')
dataset.head()
dataset = pd.read_csv('political_tweets.csv')["tweet"].values
y_train = pd.read_csv('political_tweets.csv')["dem_or_rep"].values
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(dataset, y_train, test_size=0.1)
max_words = 10000
print(max_words)
max_len = 25
tokenizer = Tokenizer(num_words = max_words, filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n1234567890', lower=False,oov_token="<OOV>")
tokenizer.fit_on_texts(x_train)
x_train = tokenizer.texts_to_sequences(x_train)
x_train = pad_sequences(x_train, max_len, padding='post', truncating='post')
tokenizer.fit_on_texts(x_test)
x_test = tokenizer.texts_to_sequences(x_test)
x_test = pad_sequences(x_test, max_len, padding='post', truncating='post')
Run Code Online (Sandbox Code Playgroud)
还有我的模型:
model = Sequential([
Embedding(max_words+1,64,input_length=max_len),
Bidirectional(GRU(64, return_sequences = True), merge_mode='concat'),
GlobalMaxPooling1D(),
Dense(64,kernel_regularizer=regularizers.l2(0.02)),
Dropout(0.5),
Dense(1, activation='sigmoid'),
])
model.summary()
model.compile(loss='binary_crossentropy', optimizer=RMSprop(learning_rate=0.0001), …Run Code Online (Sandbox Code Playgroud) 我正在使用 YOLOv5,从其官方 github 存储库克隆。
在训练过程中我遇到了以下错误:
Traceback (most recent call last):
File "C:\Users\nived\Untitled Folder 1\train.py", line 40, in <module>
import models
ModuleNotFoundError: No module named 'models'
Run Code Online (Sandbox Code Playgroud)
列车指挥:
!python train.py --img 416 --batch 16 --epochs 150 --data relative/path/to/data.yaml --weights yolov5s.pt --cache*
Run Code Online (Sandbox Code Playgroud) 据我所知,大多数语音识别实现都依赖于二进制文件,这些文件包含他们试图"识别"的语言的声学模型.
那么人们如何编译这些模型呢?
人们可以手动转录大量的演讲,但这需要花费很多时间.即使这样,当给出包含一些语音的音频文件并在文本文件中完整转录它时,单词发音仍然需要以某种方式分开.为了匹配音频的哪些部分对应于文本,仍然需要语音识别.
这是如何聚集的?如果一个人被移交了数千小时的音频文件和他们的完整转录(无论必须手动转录的问题),音频如何以正确的间隔分开,其中一个单词结束而另一个单词开始?不会产生这些声学模型软件已经必须能够语音识别的?
回归目标(即做出预测)中培训错误的总体意义是什么?
你可能会说,"好吧,你知道,训练错误可以帮助你确定哪种复杂模型最适合使用."
对此,有人会说,"不,你不能.低训练错误只能意味着你的模型符合你正在训练模型的任何数据,AKA过度拟合"
如果训练误差不是一个很好的预测性能指标,那么计算训练误差的重点是什么?
特别是当我们通过训练错误说到地狱时,只需使用验证错误.
我们什么时候会使用培训错误?
低训练误差可以表明过度拟合..是唯一使用它吗?
我目前正在研究kaggle中的数据集.在训练训练数据模型后,我在验证数据上进行测试,得到的精度约为0.49.
但是,相同的模型在测试数据上给出0.05的准确度.
我使用神经网络作为我的模型
那么,发生这种情况的可能原因是什么?如何开始检查和纠正这些问题?
machine-learning training-data cross-validation deep-learning kaggle
training-data ×10
python ×3
regression ×2
scikit-learn ×2
calibration ×1
dlib ×1
kaggle ×1
keras ×1
loss ×1
pandas ×1
pytorch ×1
r ×1
r-caret ×1
tensorflow ×1
yolo ×1
yolov5 ×1