【发布时间】:2020-04-11 18:40:59
【问题描述】:
嗨,所以我建立了一个 DNN 网络,使用对象的特征对图像中的一些对象进行分类,如下所示:
contours, _ = cv2.findContours(imgthresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
for contour in contours:
features = np.array([])
(x_start, y_start, character_width, character_height) = cv2.boundingRect(contour)
x_end = x_start + character_width
y_end = y_start + character_height
character_area = character_width * character_height
features = np.append(features, [character_width, character_height, character_area, x_start,
y_start, x_end, y_end, image_width, image_height])
print(features)
print(features.shape)
cv2.rectangle(image, (x_start, y_start), (x_end, y_end), (0, 255, 0), thickness=1)
print(features) 输出为:
[ 5. 1. 5. 105. 99. 110. 100. 100. 117.]
而print(features.shape) 是:
(9,)
我使用以下代码构建和训练了一个 DNN:
model = Sequential()
model.add(Dense(50, input_dim=9, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(40, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(30,activation='relu'))
model.add(Dense(2, activation='softmax'))
输入层有 9 个输入特征。所以我尝试使用以下方法获得模型的预测:
model.predict_classes(features)
训练数据,CSV 文件,包含 10 列(9 个特征和 1 个用于输出)
我收到以下错误:
ValueError: Error when checking input: expected dense_1_input to have shape (9,) but got array with shape (1,)
我尝试使用以下方法重塑特征数组:
np.reshape(features,(1,9)
但这也没有用。我还是这个领域的新手
【问题讨论】:
-
print(features)行输出什么?当你用np.array([])初始化你的数组然后附加一些东西时,我想你的数组的第一个元素是一个形状列表 (1,) -
@AlexisBRENON 抱歉忘了把它的输出放在我现在将更新它的问题中
-
@AlexisBRENON 我用输出值更新了问题
标签: python machine-learning keras deep-learning valueerror