“ ValueError:将符号张量馈送到模型时,我们期望这些张量具有静态批大小”是什么意思?

时间:2019-01-17 01:33:02

标签: machine-learning keras

我正在使用keras构建可预测糖尿病的神经网络。但是,我遇到了ValueError:将符号张量馈送到模型时,我们希望这些张量具有静态批处理大小。

我尝试更改输入形状,但仍然卡住。

num_classes = 2
from keras.layers import Input, Dense
from keras.models import Model

# This returns a tensor
inputs = Input(shape=(784,))

# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='sigmoid')(x)

# This creates a model that includes
# the Input layer and three Dense layers
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
          loss='binary_crossentropy',
          metrics=['accuracy'])
model.fit(x,y)  # starts training

跑步后 ValueError:将符号张量馈送到模型时,我们期望这些张量具有静态批处理大小。

2 个答案:

答案 0 :(得分:2)

由于这些行x是一个图层对象

x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)

该模型应该适合实际数据,但您可以传入一个Layer对象:

model.fit(x,y)  # starts training

简单地说,您的x是一个Layer对象,它是一个符号张量,而keras试图将其视为数据张量,但失败了。

要解决此问题,只需确保您传递的x确实是您的x训练数据即可。

答案 1 :(得分:0)

由于当您输入模型(x,y)时x不是训练数据,因此我将代码修改为:

model.fit(x_train,y_train)  # starts training