我正在使用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:将符号张量馈送到模型时,我们期望这些张量具有静态批处理大小。
答案 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