Изображение в оттенках серого в Conv2d - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в глубоком обучении, и сейчас я пытаюсь создать собственный CNN на pytorch. Я пытаюсь поместить 2 изображения в градациях серого в слой conv2d, но есть ошибка, которую я, похоже, не решаю. Пожалуйста, посмотрите мой код ниже:

import os 
import cv2
import numpy as np
from tqdm import tqdm
import torch
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from skimage import io, color
#Neural Network model 
import torch
import torch.nn as nn
import torch.nn.functional as F

path="0.jpg"
img = cv2.imread(path)
img = cv2.resize(img, (256,256))
img=color.rgb2lab(img)
X=[]
# l, a, b = cv2.split(img)
img=(img+128)/128
L=img[:,:,0] #grayscale image
ab = img[:, :, 1:]
ab=ab.reshape(256,256,-1,1)
ab=torch.from_numpy(ab).float()
X.append(L) #put grayscale on array
X.append(L) #samme image on that array
X=torch.Tensor([X]).reshape(-1,256,256,1) #try to reshape array

m=nn.Conv2d(1,256, 3) #conv layer with 3 kernel size

out=m(X)

когда я запускаю код, возникает ошибка размеров: Даны группы = 1, вес размера [256, 1, 3, 3], ожидаемый ввод [2, 256 , 256, 1], чтобы иметь 1 канал, но вместо этого получилось 256 каналов

Я не совсем уверен, почему это происходит. Я немного погуглил, и в большинстве решений говорилось, что мне пришлось превратить тензор моего изображения в 4d, поэтому я сделал это, но по некоторым причинам у него все еще есть ошибка, когда я меняю слой convd2d на

m=nn.Conv2d(256,256, 1) #conv layer with 1 kernel size

Ошибка внезапно решает сама себя, но я не думаю, что он делает то, что нужно.

Спасибо за вашу помощь! Большое Вам спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...