我试图与Keras一起使用Dataset API,并试图在提到的这里行动计划中使用第三个选项。另外,当看到@fchollet 这里的第二个评论时,我认为第三个选项已经完成了。
但是,当我试图实现它时,我得到了以下错误:
当向模型提供符号张量时,我们期望张量具有静态批处理大小。具有形状的张量:
(None, 32, 64, 64, 3)
我使用了以下策略来适应这个模型:
training_filenames = [.....]
dataset = tf.data.TFRecordDataset(training_filenames)
dataset = dataset.map(_parse_function_all) # Parse the record into tensors.
dataset = dataset.batch(20)
iterator = dataset.make_initializable_iterator()
videos, labels= iterator.get_next()
model = create_base_network(input_shape = ( 32, 64, 64 3))
# output dimension will be (None, 10) for the model above
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)
model.fit(videos, labels, , epochs=10, steps_per_epoch=1000)我可以用fit_generator来解决这个问题。我找到了这里解决方案,我应用了@Dat的解决方案。但是,为了计算AUC度量,我无法访问自定义回调中的验证数据集。所以我需要使用fit而不是fit_generator,但是首先需要消除这个错误。
有人能告诉我为什么我会犯这个错误吗?第三步是在Keras中安装模型,还是仍然存在问题?
发布于 2018-08-16 05:27:35
我想我发现了问题。我使用的是独立的Keras,而不是从Tensorflow导入的。将迭代器直接提供给model.fit()的新特性只有在使用tf.Keras时才有效,而不是独立的Keras。
发布于 2018-06-20 19:41:02
因此,我想出了如何在tf.DatasetAPI中使用keras,但是没有验证数据。你可以在这里查看我的问题,带有model.fit迭代器初始化器的Keras model.fit()
https://stackoverflow.com/questions/50935589
复制相似问题