问题类型
错误
来源
二进制的
tensorflow 版本
文件格式2.10.0
自定义代码
是的
操作系统平台和分发
Windows 10操作系统
移动的设备
- 没有回应 *
Python版本
3.9
Bazel版本
- 没有回应 *
GCC/编译器版本
- 没有回应 *
CUDA/cuDNN版本
工具箱=11.2立方英尺=8.1.0
GPU型号和内存
GTX 1080钛合金
当前行为?
jit_compile=True
时此模型的XLA编译器错误
很难确定错误的原因,因为模型在正常运行时工作正常。
重现问题的独立代码
import tensorflow as tf
import numpy as np
class Chooser(tf.keras.layers.Layer):
@tf.function
def call(self, options_input, choices_input_logits):
choices = tf.nn.softmax(choices_input_logits, axis=2)
result = tf.linalg.matmul(choices, options_input)
return result
def get_model():
options_input = tf.keras.layers.Input(shape=(10,3), name="options")
choices_input = tf.keras.layers.Input(shape=(5,10), name="choices")
net = Chooser()(options_input, choices_input)
net = tf.keras.layers.Flatten()(net)
net = tf.keras.layers.Dense(1)(net)
return tf.keras.Model([options_input, choices_input], net)
model = get_model()
model.compile(
optimizer=tf.keras.optimizers.Adam(0.001),
loss=tf.keras.losses.MeanAbsoluteError(),
jit_compile=True
)
def batch_gen():
while True:
o = np.random.uniform(low=-1.0, high=1.0, size=(10, 3))
c = np.random.uniform(low=0.0, high=1.0, size=(5, 10))
y = 1
yield {"options": o, "choices": c}, y
dataset = tf.data.Dataset.from_generator(batch_gen, output_types=({"options": tf.float32, "choices": tf.float32}, tf.float32))
dataset = dataset.batch(32)
model.fit(dataset, steps_per_epoch=100, epochs=1)
相关日志输出
tensorflow/compiler/xla/client/lib/dynamic_shaped_ops.cc:92] Check failed: left_branch_shape.rank() == right_branch_shape.rank() (1 vs. 2)left rank of (1) vs. right rank of (2)
6条答案
按热度按时间u0sqgete1#
嗨@JustASquid!
使用XLA和tf.函数的正确方法是启用
jit_compile=真
具有tf.函数。
随附已解决的摘要以供参考。
谢谢你,谢谢你
zf2sa74q2#
@mohantym我想XLA编译整个模型,而不仅仅是自定义层。在
@tf.function
上设置jit_compile=True
,同时在模型编译上仍然使用jit_compile=True
,会导致同样的错误。holgip5t3#
@就一个钱!
如果要对整个模型使用XLA,则可以使用XLA-Autoclustering。
附要点供参考。
谢谢你,谢谢你
pgvzfuti4#
感谢您发送编修。
是否有任何原因/文档说明为什么
tf.config.optimizer.set_jit(True)
在这里工作,而model.compile()
中的jit_compile=True
不工作?sf6xfgos5#
@就一个钱!
随附XLA使用的相关文档随附于此。
和tf.function,和Autoclustering。
我们现在可以将其标记为已解决了吗?
谢谢你,谢谢你
1cosmwyk6#
此问题已自动标记为过时,因为它最近没有任何活动。如果没有进一步的活动,它将关闭。谢谢。