【发布时间】:2019-10-26 12:21:19
【问题描述】:
我有一个神经网络,来自一个tf.data 数据生成器和一个tf.keras 模型,如下(简化版——因为它会太长):
dataset = ...
使用next_x 方法为x_train 迭代器调用get_next 并为next_y 方法调用get_next 为y_train 迭代器的tf.data.Dataset 对象。每个标签都是一个单热形式的(1, 67) 数组。
层:
input_tensor = tf.keras.layers.Input(shape=(240, 240, 3)) # dim of x
output = tf.keras.layers.Flatten()(input_tensor)
output= tf.keras.Dense(67, activation='softmax')(output) # 67 is the number of classes
型号:
model = tf.keras.models.Model(inputs=input_tensor, outputs=prediction)
model.compile(optimizer=tf.train.AdamOptimizer(), loss=tf.losses.softmax_cross_entropy, metrics=['accuracy'])
model.fit_generator(gen(dataset.next_x(), dataset.next_y()), steps_per_epochs=100)
gen 是这样定义的:
def gen(x, y):
while True:
yield(x, y)
我的问题是,当我尝试运行它时,model.fit 部分出现错误:
ValueError: Cannot take the length of Shape with unknown rank.
感谢任何想法!
【问题讨论】:
-
我有同样的错误。我正在通过数据集 api 读取 tfrecords 并将结果传递给 model.fit 方法,但它给出了与上述相同的错误。你知道如何解决这个问题吗?
-
@user238607,数据集产生的记录的类型和形状是什么?
-
你能分享生成数据的函数吗?
-
您是否尝试过在生成器中调用
next_x()和next_y()而不是通过参数调用它? -
@DanielMöller:我已经在这里单独提出了我的问题:stackoverflow.com/questions/53851793/…你能看一下吗?
标签: python tensorflow keras deep-learning