我有训练模型并保存了泡菜文件,但是当我尝试将它加载到新数据上时,我收到错误 >>> 回溯(最近一次调用):文件“”,第 1 行,在“
请参考下面的脚本,我在其中训练了数据保存的泡菜文件。
# Import the pandas package, then use the "read_csv" function to read
# the labeled training data
import os
import pandas as pd
from bs4 import BeautifulSoup
import re
import nltk
from nltk.corpus import stopwords # Import the stop word list
from nltk.stem.snowball import SnowballStemmer
from nltk.tokenize import word_tokenize
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn import svm
from sklearn.grid_search import GridSearchCV
import …Run Code Online (Sandbox Code Playgroud) 我正在训练一个小型网络,训练似乎进展顺利,val 损失减少,验证准确度达到 80 左右,一旦没有更多改进,它实际上会停止训练(耐心=10)。它训练了 40 个 epoch。然而,它只为每个测试图像预测一个类别!我尝试随机初始化转换层,我添加了正则化器,我从 Adam 切换到 SGD,我添加了 Clipvalue,我添加了 dropout。我还切换到了softmax(我只有两个标签,但我看到了一些关于使用softmax和带有2个神经元的密集层的建议)。其中一些或其中一项有助于解决过度拟合问题,但对预测问题没有任何作用。尽管数据集很小,但数据是平衡的,因此如果它也为评估集预测相同的标签,则达到 80% 是没有意义的。
我的模型有什么问题以及如何修复它?欢迎任何评论。
#Import some packages to use
import cv2
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from keras.preprocessing.image import ImageDataGenerator
import os
from keras.regularizers import l2
from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
from keras.layers.core import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.initializers import RandomNormal
os.environ["CUDA_VISIBLE_DEVICES"]="0"
epochs = 200
callbacks = []
#schedule = None
decay = 0.0 …Run Code Online (Sandbox Code Playgroud) training-data neural-network deep-learning conv-neural-network keras
我有一个神经网络,它采用维度 (batch_size, 100, 1, 1) 的输入张量并生成维度 (batch_size, 3, 64, 64) 的输出张量。使用模型推断一批两个元素和单独推断元素时,我得到了不同的结果。
使用下面的代码,我初始化了一个维度为 (2, 100, 1, 1) 的 pytorch 张量。我将这个张量传递给模型,然后将模型输出的第一个元素存储在变量 result1 中。对于 result2,我只是通过我的模型直接运行原始输入张量的第一个元素。
inputbatch=torch.randn(2, Z_DIM, 1, 1, device=device)
inputElement=inputbatch[0].unsqueeze(0)
result1=model(inputbatch)[0]
result2=model(inputElement)
Run Code Online (Sandbox Code Playgroud)
我的期望是 result1 和 result2 是一样的。但是 result1 和 result2 是完全不同的。谁能解释为什么这两个输出不同。
我只是想使用 PyTorch 库训练 ResNet18 模型。训练数据集包含 25,000 张图像。因此,即使是第一个 epoch 也需要很长时间才能完成。因此,我想在某一个号之后保存进度。批量迭代完成。但我不知道如何修改我的代码以及如何在代码中使用 torch.save() 和 torch.load() 函数来保存定期进度。
我的代码如下:
# BUILD THE NETWORK
import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils.data
import torch.nn.functional as F
import torchvision
import torchvision.models as models
from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as plt
# DOWNLOAD PRETRAINED MODELS ON ImageNet
model_resnet18 = torch.hub.load('pytorch/vision', 'resnet18', pretrained = True)
model_resnet34 = torch.hub.load('pytorch/vision', 'resnet34', pretrained = True)
for name, param in model_resnet18.named_parameters():
if('bn' not in …Run Code Online (Sandbox Code Playgroud) 我需要训练一个级联分类器来检测车辆和不同的视角.我正在使用OpenCV.
我需要捕捉的一些角度导致车辆在图像内的放置是对角的,如下所示:

现在问题在于,因为车辆在图像上对角放置,所以有很多不必要的背景,我不能仅因为图像必须是矩形而裁剪掉.是否有另一种方法可以为物体的对角放置角度/视角构建正样本?我确实需要分类器能够识别对象的这个特定视图.在上面的汽车中并没有那么糟糕,因为汽车的长度和宽度没有太大差异.但是,如果我用卡车做同样的事情,这比它的宽度长几倍,那么图像最终会比它们感兴趣的物体具有更多的背景,如下所示.我担心这对分类是好还是坏,如果有任何解决方案.
分类器是否会识别车辆的特定角度,无论它在背景上旋转的方式如何?在这种情况下,旋转整个卡车图像以使卡车水平/垂直,然后剪切图像的其余部分会更好吗?

我想从图像中提取HOG功能,以便可以将它们通过分类器(AdaBoost.SAMME尤其是使用scikit-learn:scikit-learn集合中的multiclass Adaboost)。
为此,我需要将图像转换为类似数组的 shape = [n_samples, n_features]
但是从图像中提取HOG特征的输出是一维数组。这是我的代码的相关部分:
tree = io.imread('C:\\Users\\app\\Pictures\\treephoto1.jpg')
type(tree)
print tree.shape, tree.dtype
graytree = color.rgb2gray(tree)
ge = filter.canny(graytree)
fd, hog_image = hog(ge, orientations=8, pixels_per_cell=(16, 16),
cells_per_block=(1, 1), visualise=True)
Run Code Online (Sandbox Code Playgroud)
当我检查时fd,它是一个像这样的数组:

让我们以前9行为例,并假设这是hog函数的完整输出,并且从中获得HOG功能的这张图像是训练数据集中的第一张图像。
然后,假设我有一千张训练图像,那么如何将HOG信息表示为X = [n_samples, n_features]?
下面的行X是我可以用作分类器输入的第一行吗?
[1, [0.162, 0.168, 0.250, 0.114, 0.106, 0.044, 0.035, 0.059, 0.200, 0.149]]
Run Code Online (Sandbox Code Playgroud)
将整行HOG值都视为一个功能吗?还是这是错误的?据我了解,培训样本应符合以下格式:
[sample_index, feature_1, feature_2, feature_3, ..., feature_x]
Run Code Online (Sandbox Code Playgroud) numpy training-data scikit-learn anaconda cascade-classifier
当传递给tf.train.batch时,似乎必须严格定义元素的形状,否则它将抱怨All shapes must be fully defined是否存在带有shape的张量Dimension(None)。那么,如何训练不同尺寸的图像呢?
我最近开始使用SpaCy的NLP之旅,我有大约5,500个字符串,我想要标记.对于前100个,我使用带有自定义列的电子表格执行此操作,然后通过脚本运行以生成Python词典.在工作表中,我已经删除了字符串,标签类型,标签值.然后该脚本计算出字符串中标签值的位置.
以这种方式生成培训数据相当费时,并且容易出错.
有没有工具可以帮助解决这个问题?我只需要能够突出显示子字符串,然后选择标签类型.我可以自己构建它,但我觉得它可能已经存在.
我从这里得到以下例子。
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
Run Code Online (Sandbox Code Playgroud)
有两个单独的目录用于训练和验证。只是好奇我是否可以从同一目录而不是两个单独的目录中分离出训练和验证数据?有什么例子吗?
我试图更新每个时期的权重,但我正在批量处理数据。问题是,为了规范损失,我需要在训练循环之外录制 TensorFlow 变量(要跟踪和规范化)。但是当我这样做时,训练时间是巨大的。
我认为,它将所有批次的变量累积到图中并在最后计算梯度。
我已经开始跟踪 for 循环外和 for 循环内的变量,后者比第一次要快。我很困惑为什么会发生这种情况,因为无论我做什么,我的模型的可训练变量和损失都保持不变。
# Very Slow
loss_value = 0
batches = 0
with tf.GradientTape() as tape:
for inputs, min_seq in zip(dataset, minutes_sequence):
temp_loss_value = my_loss_function(inputs, min_seq)
batches +=1
loss_value = loss_value + temp_loss_value
# The following line takes huge time.
grads = tape.gradient(loss_value, model.trainable_variables)
Run Code Online (Sandbox Code Playgroud)
# Very Fast
loss_value = 0
batches = 0
for inputs, min_seq in zip(dataset, minutes_sequence):
with tf.GradientTape() as tape:
temp_loss_value = my_loss_function(inputs, min_seq)
batches +=1
loss_value = loss_value + temp_loss_value …Run Code Online (Sandbox Code Playgroud) training-data ×10
python ×5
keras ×2
pytorch ×2
tensorflow ×2
anaconda ×1
gradient ×1
nlp ×1
numpy ×1
opencv ×1
pickle ×1
resnet ×1
sample-data ×1
scikit-learn ×1
spacy ×1