我是使用Tensorflow和Python的新手,我已经在网站上看到了所有教程,现在我正在使用我的第一个真实数据集。
我想对神经网络进行的工作是在了解每日趋势的情况下预测一些电厂的能耗。我有一个带有所有这些(真实)值的.xlsx文件。我使用熊猫分割并标准化了火车集和验证集中的数据(即train_x和train_y,其中train_x是时间,train_y是标签)。 x和y数组均为numpy.ndarray,其格式如下(只是头部):
print(train_x)
[ 644]
[ 645]
[ 646]
print(train_y)
[-0.09154356 1.10702972 1.13661838]
[ 0.05104414 1.39112378 1.5319337 ]
[-0.05719421 1.40702419 1.48187637]
然后我创建了模型:
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu, input_shape= (train_x.shape([0]))),
keras.layers.Dense(3, activation=tf.nn.softmax)])
model.compile(loss='categorical_cross_entropy',
optimizer='Adam',
metrics=['accuracy'])
history = model.fit(train_x, train_y, epochs=5, verbose=1)
但是当我运行脚本时,出现此错误:
TypeError: 'tuple' object is not callable
我猜问题出在关于输入层的形状或损耗函数,如here所示,所以我尝试在以下位置修改损耗函数:
LOSS = tf.nn.categorical_cross_entropy_with_logits(logits=3, labels=3)
,当然还有model.compile:
model.compile(loss=LOSS,
optimizer='Adam',
metrics=['accuracy'])
但是我又遇到了相同的错误:
TypeError: 'tuple' object is not callable
我哪里出错了?
答案 0 :(得分:0)
它应该是int
,而不是array.shape[0]
。 array.shape([0])
是numpy数组的属性,而不是方法。正确的语法应为:
shape
另外,将keras.layers.Dense(64, activation=tf.nn.relu, input_shape= (train_x.shape[-1],)),
和train_x
更改为2d数组,其形状为[length_of_array,1]。