gpt4 book ai didi

python - 不能获取等级未知的 Shape 的长度

转载 作者:太空狗 更新时间:2023-10-29 21:57:44 27 4
gpt4 key购买 nike

我有一个神经网络,来自一个tf.data数据生成器和一个tf.keras模型,如下(一个简化版——因为会太长):

数据集 = ...

tf.data.Dataset 对象,使用 next_x 方法调用 x_train 迭代器的 get_next对于 next_y 方法调用 y_train 迭代器的 get_next。每个标签都是 one-hot 形式的 (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: 无法获取等级未知的 Shape 的长度。

欢迎任何想法!

最佳答案

你能发布更长的堆栈跟踪吗?我认为您的问题可能与最近的 tensorflow 问题有关:

https://github.com/tensorflow/tensorflow/issues/24520

还有一个简单的 PR 可以修复它(尚未合并)。也许自己试试?

编辑

这是公关:打开 tensorflow/python/keras/engine/training_utils.py

替换以下内容(目前为第 232 行):

  if (x.shape is not None
and len(x.shape) == 1

用这个:

  if tensor_util.is_tensor(x):
x_shape_ndims = x.shape.ndims if x.shape is not None else None
else:
x_shape_ndims = len(x.shape)

if (x_shape_ndims == 1

关于python - 不能获取等级未知的 Shape 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53597406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com