我想绘制加载到 ImageDataGenrator 中的随机图像样本,我该怎么做?
我已经导入了模块,但我不知道如何获取图像
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255)
train = train_datagen.flow_from_directory(PATH, target_size = (IMG_SIZE, IMG_SIZE), batch_size = K, class_mode = None)
plt.imshow(?)
Run Code Online (Sandbox Code Playgroud) 我有一个关于分割 20k 图像及其标签的数据集的问题,该数据集的格式有YOLOv3一个图像文件和一个.txt与图像同名的文件,文本文件内部有标签。
我想将数据集分割成训练/测试分割,有没有办法随机选择图像及其标签 .txt 文件并将其存储在单独的文件夹中Python?
我希望能够随机分割数据集。例如,也选择 16k 文件和标签文件,并将它们单独存储在 train 文件夹中,其余 4k 应存储在 test 文件夹中。
这可以在文件资源管理器中手动完成,方法是选择前 16k 个文件并将它们移动到不同的文件夹,但分割不会是随机的,因为我计划对同一数据集一遍又一遍地执行此操作。
这是数据的 图像和标签屏幕截图
我正在尝试使用此链接中的“街景门牌号(SVHN)数据集”来实现图像分类器。我使用的格式 2 包含从 0 到 9 的 32x32 RGB 居中数字图像。当我尝试编译并拟合模型时,出现以下错误:
Epoch 1/10
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-37-31870b6986af> in <module>()
3
4 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
----> 5 model.fit(trainX, trainY, validation_data=(validX, validY), batch_size=128, epochs=10)
9 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
975 except Exception as e: # pylint:disable=broad-except
976 if hasattr(e, "ag_error_metadata"):
--> 977 raise e.ag_error_metadata.to_exception(e)
978 else:
979 raise
ValueError: in user code:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:795 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run …Run Code Online (Sandbox Code Playgroud) 我创建了一个以 Keras 和 Tensorflow 作为后端的 CNN,我的数据由表示 EEG(脑电图)的 2D 图像组成,这些图像来自预处理的DEAP 数据集。
我曾考虑过使用SHAP作为模型解释器,但由于有几种形状解释器(内核、深度、线性、梯度...),我不确定哪一个最适合我的需求,或者甚至 SHAP 是否对我的工作有帮助案件。由于我的图像(尺寸:40x100x1,第三维来自np.expand_dims,因为 keras 需要 3D 图像)没有颜色,SHAP 是一个相当好的方法吗?
我的数据集中的一项的片段
[[[ 3.10000000e+01]
[ 3.00000000e+01]
[-1.14638321e-01]
[ 1.24121500e+02]
[ 3.11109855e+00]
[-1.93024874e-01]]
...
[[ 3.10000000e+01]
[ 3.00000000e+01]
[-6.61770462e-02]]]
Run Code Online (Sandbox Code Playgroud)
从我的数据集中绘制上述项目
希望有人能帮助我或指出正确的方向,谢谢!
通常,如果我很好地理解 Conv2D 层的 PyTorch 实现,则填充参数会将带有零的卷积图像的形状扩展到输入的所有四个边。因此,如果我们有形状为 (6,6) 的图像并设置padding = 2和strides = 2和kernel = (5,5),则输出将是形状为 (1,1) 的图像。然后,padding = 2用零填充(上 2 个、下 2 个、左 2 个、右 2 个),得到形状为 (5,5) 的卷积图像
但是,当运行以下脚本时:
import torch
from torch import nn
x = torch.ones(1,1,6,6)
y = nn.Conv2d(in_channels= 1, out_channels=1,
kernel_size= 5, stride = 2,
padding = 2,)(x)
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
y.shape
==> torch.Size([1, 1, 3, 3]) ("So shape of convolved image = (3,3) instead of (5,5)")
y[0][0]
==> tensor([[0.1892, 0.1718, 0.2627, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Cifar10 数据集计算多类分类问题的 f1 分数。我正在从 sklearn 库导入 f1 指标。但是我不断收到以下错误消息:
ValueError: Classification metrics can't handle a mix of multiclass and continuous-multioutput targets
Run Code Online (Sandbox Code Playgroud)
下面是我在验证集上测试模型的函数。有人能够解释在执行多类分类时如何计算 f1 吗?我很困惑。
@torch.no_grad()
def valid_function(model, optimizer, val_loader):
model.eval()
val_loss = 0.0
val_accu = 0.0
f_one = []
for i, (x_val, y_val) in enumerate(val_loader):
x_val, y_val = x_val.to(device), y_val.to(device)
val_pred = model(x_val)
loss = criterion(val_pred, y_val)
val_loss += loss.item()
val_accu += accuracy(val_pred, y_val)
f_one.append(f1_score(y_val.cpu(), val_pred.cpu()))
val_loss /= len(val_loader)
val_accu /= len(val_loader)
print('Val Loss: %.3f | Val Accuracy: %.3f'%(val_loss,val_accu))
return …Run Code Online (Sandbox Code Playgroud) metrics machine-learning conv-neural-network multiclass-classification
我想获得预先构建的caffe模型的第6层的输出并在其上训练SVM.我的目的是构建一个自定义图像分类器,用户可以在其中创建自定义图像类,并在这些类之间对输入图像进行分类,而不是imagenet类.这里是伪代码:
#input
file='cat.jpg'
image=caffe.io.load_image(file)
#model
net = caffe.Classifier('deploy.prototxt','model.caffemodel')
#compute activation at layer 6 --- Need help here. Will net.forward help? will the activation be retained?
#extract features from layer 6:
features = net.blobs['fc6'].data[4][:,0, 0]
#SVM
category=svm.predict(features)
print get_category_name(category)
Run Code Online (Sandbox Code Playgroud) python computer-vision neural-network caffe conv-neural-network
假设我已经定义了我的顺序模型如下:
require 'nn'
net = nn.Sequential()
net:add(nn.SpatialConvolution(1, 6, 5, 5)) -- 1 input image channel, 6 output channels, 5x5 convolution kernel
net:add(nn.ReLU()) -- non-linearity
net:add(nn.SpatialMaxPooling(2,2,2,2)) -- A max-pooling operation that looks at 2x2 windows and finds the max.
net:add(nn.SpatialConvolution(6, 16, 5, 5))
net:add(nn.ReLU()) -- non-linearity
net:add(nn.SpatialMaxPooling(2,2,2,2))
net:add(nn.View(16*5*5)) -- reshapes from a 3D tensor of 16x5x5 into 1D tensor of 16*5*5
net:add(nn.Linear(16*5*5, 120)) -- fully connected layer (matrix multiplication between input and weights)
net:add(nn.ReLU()) -- non-linearity
net:add(nn.Linear(120, 84))
net:add(nn.ReLU()) -- non-linearity …Run Code Online (Sandbox Code Playgroud) 我的代码是预测句子的情绪.我训练了一个CNN模型并保存了它.当我加载我的模型并尝试预测句子的情绪时,我对同一个句子有不同的预测.我的代码如下,当我尝试通过调用底部的函数predict_cnn_word2vec来预测sentene时,问题就出现了:
import logging;
import numpy as np;
import tensorflow as tf;
import sklearn as sk
import re;
import json
import string;
import math
import os
from sklearn.metrics import recall_score, f1_score, precision_score;
class CNN(object):
def __init__(self,logger):
self.logger = logger;
def _weight_variable(self,shape):
initial = tf.truncated_normal(shape, stddev = 0.1);
return tf.Variable(initial);
def _bias_variable(self,shape):
initial = tf.constant(0.1, shape = shape);
return tf.Variable(initial);
def _conv2d(self,x, W, b, strides=1):
# convolve and relu activation
x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME');
x = tf.nn.bias_add(x, …Run Code Online (Sandbox Code Playgroud) machine-learning sentiment-analysis conv-neural-network tensorflow
我目前正在阅读SSD Single Shot Detector,并且有一个我很难理解的术语。该术语是“头”。当我听到这个词时,就像起初一样,我想到了网络的负责人。
我查看了由Google创建的对象检测API,发现带有不同头部类型的“ heads”文件夹,一种用于框编码,另一种用于类预测。
抽象的“ head”类的文档不是超级启发性的:
不同模型中所有不同种类的预测头都将从该类继承。所有头类之间的共同点是它们具有一个 作为其第一个参数
predict接收的features函数。
我想我对它们有较高的了解,但是我对它们没有具体的定义。有人可以定义一个“头”并解释如何拥有“盒子预测头”或“分类头”吗?
machine-learning computer-vision neural-network conv-neural-network object-detection-api