首页 > 解决方案 > 数据基数是 Keras 中的模棱两可的错误

问题描述

我拼凑了一些随机生成房屋属性的代码片段。如果房屋符合特定标准,则房屋被标记为 90% 的时间。然后我试图将它输入到一个基本的 DNN 中,但这就是一切崩溃的地方。DNN 代码对我来说主要是黑匣子,我在这里尝试了很多东西,但我无法让它获取我的数据。

我认为数组的形状导致了这个问题。

# Imports for DNN
from keras.models import Sequential
from keras.layers import Dense

# Imports for generating data
import random

class HouseDetails:
    def __init__(self, color, sqrft, rooms, liked):
        self.color = color
        self.sqrft = sqrft
        self.rooms = rooms
        self.liked = liked

Houses = []
X = []
y = []

for numbers in range(10000):
    color = random.randint(0,5)
    sqrft = random.randint(500, 5000)
    rooms = random.randint(0, 5)
    if ((color == 2 or color == 4) and (rooms >2 and sqrft > 2000)):
        liked = random.randint(0,9)
        if(liked):
             liked = 1
    else:
        liked = 0
    Houses.append(HouseDetails(color,sqrft,rooms,liked))

# Split into input (X) and output (y) variables
for House in Houses:
    if(House.liked):
        X.append(House.color)
        X.append(House.sqrft)
        X.append(House.rooms)
        y.append(House.liked)

# Define the keras model
model = Sequential()
model.add(Dense(6, input_dim=3, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# Compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10, verbose=0)

# Make class predictions with the model
predictions = model.predict_classes(X)

# Show the first 5
for i in range(5):
    print('%s was %d (we expected %d)' % (X[i].tolist(), predictions[i], y[i]))

我收到的错误:

ValueError: Data cardinality is ambiguous:
  x sizes: 2982
  y sizes: 994
Please provide data which shares the same first dimension.

我确定答案就在错误中,但是我对其中的很多内容都很陌生,我就是想不通。

标签: pythonkerasneural-network

解决方案


代码是垃圾,但问题在于“for House”循环。它应该是:

# Split into input (X) and output (y) variables
for House in Houses:
    if (House.liked):
        X.append([(House.color), (House.sqrft), (House.rooms)])
        y.append(House.liked)

推荐阅读