【问题标题】:ValueError: Data cardinality is ambiguous:ValueError:数据基数不明确:
【发布时间】:2021-02-15 21:37:33
【问题描述】:

我使用的代码来自:https://github.com/TheoMoumiadis/HVAC-calc-with-NN 但我有这个错误: ValueError:数据基数不明确: x 尺寸:667 尺码:668 确保所有数组都包含相同数量的样本。

你能帮我吗?我应该做一个形状,但怎么做?

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import tensorflow as tf
import keras
from keras import models
from keras import layers
from keras.utils import np_utils


dataset = pd.read_csv('C:/.../ENB2012_data.csv')

print(dataset)

X_train = dataset.iloc[0:667,1:9].values.astype('float32')
Y1_train = dataset.loc[0:667,'Y1'].values.astype('float32')
Y2_train = dataset.loc[0:667,'Y2'].values.astype('float32')

X_test = dataset.iloc[668:767,1:9].values.astype('float32')
Y1_test = dataset.loc[668:767,'Y1'].values.astype('float32')
Y2_test = dataset.loc[668:767,'Y2'].values.astype('float32')

mean = X_train.mean(axis=0)
X_train -= mean
std = X_train.std(axis=0)
X_train /= std

X_test -= mean
X_test /= std

def build_model():
    
    model =models.Sequential()
    
    model.add(layers.Dense(64, input_dim=X_train.shape[1], activation='relu'))
    
    model.add(layers.Dense(64,activation='relu'))
    
    model.add(layers.Dense(1))

    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
    return model

model = build_model()
model.fit(X_train, Y1_train, epochs=300, batch_size=10, verbose=0)
test_mse_score, test_mae_score = model.evaluate(X_test, Y1_test)

【问题讨论】:

  • 注意iloc 选择的内容,尝试更改为dataset.ix[0:667,1:9].values.astype('float32')。编辑:您提供的链接也是这样,再次检查。
  • 如果我使用 dataset.ix 而不是 dataset.iloc 我有一个 AttributeError: 'DataFrame' 对象没有属性 'ix'。我使用 Python 3.7.9 和 tensorflow 2.4.1、Keras 2.4.3
  • 或者你可以使用这个X_train = dataset.iloc[0:668,1:9].values.astype('float32')X_test = dataset.iloc[667:767,1:9].values.astype('float32')
  • 完美,谢谢!

标签: tensorflow cardinality


【解决方案1】:

谢谢@Frightera 和@Antoine。为了社区的利益,在这里提供解决方案。

请参考下图的工作代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import tensorflow as tf
import keras
from keras import models
from keras import layers
from keras.utils import np_utils

dataset = pd.read_csv('C:/.../ENB2012_data.csv')

#print(dataset)

X_train = dataset.iloc[0:668,1:9].values.astype('float32')
Y1_train = dataset.loc[0:667,'Y1'].values.astype('float32')
Y2_train = dataset.loc[0:667,'Y2'].values.astype('float32')

X_test = dataset.iloc[667:767,1:9].values.astype('float32')
Y1_test = dataset.loc[668:767,'Y1'].values.astype('float32')
Y2_test = dataset.loc[668:767,'Y2'].values.astype('float32')

mean = X_train.mean(axis=0)
X_train -= mean
std = X_train.std(axis=0)
X_train /= std

X_test -= mean
X_test /= std

def build_model():
    
    model =models.Sequential()
    
    model.add(layers.Dense(64, input_dim=X_train.shape[1], activation='relu'))
    
    model.add(layers.Dense(64,activation='relu'))
    
    model.add(layers.Dense(1))

    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
    return model

model = build_model()
model.fit(X_train, Y1_train, epochs=300, batch_size=10, verbose=0)
test_mse_score, test_mae_score = model.evaluate(X_test, Y1_test)

输出:

4/4 [==============================] - 0s 3ms/step - loss: 283.6571 - mae: 13.5637

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2021-12-20
    • 2021-06-29
    • 2021-02-07
    • 1970-01-01
    • 2023-03-23
    • 2020-10-17
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多