#python #tensorflow #deep-learning #conv-neural-network
Вопрос:
Я все еще новичок в глубоком обучении и CNN, и я не знаю, в чем заключается эта ошибка, так что кто-нибудь может мне помочь?
Эта модель предназначена для ввода массива изображений,а вывод представляет собой список элементов,и каждый элемент содержит int, int, float, и я не могу создать модель, которая не содержит ошибок.
Ошибка
Ошибка значения: Размеры должны быть равны, но равны 162 и 3 для ‘{{узел mean_squared_error/квадратное различие}} = Квадратное различие[T=DT_FLOAT](последовательный/dense_1/Relu, средний квадрат_error/Приведение)’ с входными фигурами: [?,162], [?,54,3].
Код
import numpy as np
import os
from skimage import io
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
def SeperateDataFrameItems(imagesArray, maxCount):
tempList = []
finalList = []
ct = 0
for i in range(len(imagesArray)):
if imagesArray[i][0] != '#':
tempList.append(np.array([imagesArray[i][1], imagesArray[i][2], imagesArray[i][3]]))
ct = ct 1
else:
for i in range(ct, maxCount):
tempList.append(np.array([-1,-1,-1]))
finalList.append(tempList)
tempList = []
ct = 0
return np.stack(finalList, axis=0)
def HandleDesigndata(start, end):
path = 'Designs/designs/'
all_images = []
for image_path in os.listdir(path):
img = io.imread(path image_path, as_gray=True)
img = img.reshape([768, 607, 1])
all_images.append(img)
return np.array(all_images)
image_list = HandleDesigndata(100, 200)
circles_data = pd.read_csv('Data.csv')
circles_data = SeperateDataFrameItems(circles_data.to_numpy(), 54)
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(768, 607, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(162, activation='relu'))
model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
model.fit(x=image_list, y=circles_data, batch_size=100, epochs=10, validation_split=0.1)```