Python 3.x 在tensorflow 2.4中使用sampled_softmax时,无法将符号Keras输入/输出转换为numpy数组类型错误

Python 3.x 在tensorflow 2.4中使用sampled_softmax时,无法将符号Keras输入/输出转换为numpy数组类型错误,python-3.x,keras,deep-learning,tensorflow2.0,Python 3.x,Keras,Deep Learning,Tensorflow2.0,我正在尝试使用TF2.4和Keras以及tf.nn.sampled_softmax_loss来训练单词嵌入分类器。但是,当调用模型的fit方法时,会出现“无法将符号Keras输入/输出转换为numpy数组”类型错误。请帮助我修复错误或使用替代方法进行候选采样 将tensorflow导入为tf 将numpy作为np导入 textVectoriation=tf.keras.layers.experimental.preprocessing.textVectoriation 类别样本OFTMAXLOS

我正在尝试使用TF2.4和Keras以及tf.nn.sampled_softmax_loss来训练单词嵌入分类器。但是,当调用模型的fit方法时,会出现“无法将符号Keras输入/输出转换为numpy数组”类型错误。请帮助我修复错误或使用替代方法进行候选采样

将tensorflow导入为tf
将numpy作为np导入
textVectoriation=tf.keras.layers.experimental.preprocessing.textVectoriation
类别样本OFTMAXLOSS:#(tf.keras.Loss.Loss):
定义初始化(自、模型、n类):
self.model=model
输出层=模型层[-1]
self.input=output\u layer.input
self.weights=output\u layer.weights
self.n_类=n_类
def损失(自身、y_真实、y_预测、**kwargs):
标签=tf.argmax(y_为真,轴=1)
标签=tf.展开尺寸(标签,-1)
损耗=tf.nn.sampled\u softmax\u损耗(
权重=自身权重[0],
偏差=自身重量[1],
标签=标签,
输入=自我输入,
采样数=3,
num_classes=self.n_classes
)
回波损耗
最大功能=50最大声音大小。
最大长度=10#将输出填充到的序列长度。
嵌入_dims=5
input_data=np.数组([
“Python机器学习”,
“从头开始的数据科学:Python的首要原则”,
“使用Scikit Learn和TensorFlow进行机器学习的实践:构建智能系统的概念、工具和技术”,
“Python机器学习入门:数据科学家指南”,
“Python机器学习重要入门:改进和优化机器学习系统和算法的最佳实践”,
“Python中的机器学习:预测分析的基本技术”,
“Python数据科学手册:处理数据的基本工具”,
“介绍数据科学:大数据、机器学习等,使用Python工具”,
“真实世界机器学习”])
标签\u one\u hot=[]
对于范围内的i(len(输入_数据)):
labels=np.random.randint(0,6,最大特征)
标签[标签>1]=1
标签\u一个\u热。附加(标签)
labels\u one\u hot=np.array(labels\u one\u hot)
#创建文本分类编码层。
矢量化\图层=文本矢量化(
最大令牌=最大特征,
输出模式为int,
输出(序列长度=最大长度)
矢量化\u层.adapt(文本\u数据集)
inp=tf.keras.Input(shape=(1,),dtype=tf.string)
idxs=矢量化_层(inp)
嵌入=tf.keras.layers.Embedding(最大特征+1,嵌入尺寸,输入长度=最大长度)(idxs)
flat=tf.keras.layers.flatte()(嵌入)
out=tf.keras.layers.density(标签为一个热形状[1])(平坦)
model=tf.keras.models.model(输入,输出)
softmax=SampledSoftmaxLoss(型号、标签\u-one\u-hot.shape[1])
model.compile('adam',loss=softmax.loss)
model.summary()
model.fit(输入数据、标签)
模型预测(输入数据)
这是日志:

INFO:tensorflow:资产写入:模型/资产
型号:“型号5”
_________________________________________________________________
层(类型)输出形状参数
=================================================================
输入_84(输入层)[(无,1)]0
_________________________________________________________________
文本向量化(TextV(None,10)0
_________________________________________________________________
嵌入_83(嵌入)(无,10,5)255
_________________________________________________________________
展平25(展平)(无,50)0
_________________________________________________________________
致密(致密)(无,50)2550
=================================================================
总参数:2805
可培训参数:2805
不可训练参数:0
_________________________________________________________________
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
106型号编译('adam',损耗=软最大损耗)
107范本摘要()
-->108型号拟合(输入数据、标签、单件热)
109#现在,模型可以将字符串映射为整数,并且可以添加嵌入
110#层将这些整数映射到已学习的嵌入。
9帧
/包装器中的usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py(*args,**kwargs)
975例外情况为e:#pylint:disable=broad except
976如果hasattr(e,“AGU错误元数据”):
-->977将e.ag\u错误\u元数据引发到\u异常(e)
978其他:
979提高
TypeError:在用户代码中:
/usr/local/lib/python3.6/dist包/tensorflow/python/keras/engine/training.py:805 train_函数*
返回步骤_函数(self、迭代器)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:795-step_函数**
输出=模型。分配策略。运行(运行步骤,参数=(数据,)
/usr/local/lib/python3.6/dist包/tensorflow/python/distribute/distribute_lib.py:1259运行
返回self.\u扩展。为每个\u副本调用\u(fn,args=args,kwargs=kwargs)
/usr/local/lib/python3.6/dist包/tensorflow/python/distribute/distribute_lib.py:2730为每个复制副本调用
返回自我。为每个副本(fn、ARG、kwargs)调用
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute\u-lib.py:3417\u为每个副本调用\u
返回fn(*args,**kwargs)
/usr/local/lib/python3.6/dist包/tensorflow/python/keras/engine/training.py:788运行步骤**
输出=型号列车步进(数据)
/usr/local/lib/python3.6/dist包/tensorflow/python/keras/engine/training.py:756 train\u步骤
del model
model = tf.keras.models.Model(inp, out)