错误输出:
InvalidArgumentError Traceback (most recent call last)
Input In [22], in <cell line: 5>()
3 cnn.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
4 print(X_train)
----> 5 cnn.fit(X_train, y_train)
...
Node: 'model/embedding/embedding_lookup'
indices[31,66] = -1 is not in [0, 3345)
[[{{node model/embedding/embedding_lookup}}]] [Op:__inference_train_function_1090]
我试图做一个文本分类CNN,所以X_train包含-1到1范围内的单词的特征向量(在使用MinMaxScaler之后),y_train是数字标签。
模型总结如下:
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_3 (InputLayer) [(None, None)] 0 []
embedding_2 (Embedding) (None, None, 128) 428160 ['input_3[0][0]']
conv1d_6 (Conv1D) (None, None, 16) 6160 ['embedding_2[0][0]']
conv1d_7 (Conv1D) (None, None, 16) 10256 ['embedding_2[0][0]']
conv1d_8 (Conv1D) (None, None, 16) 14352 ['embedding_2[0][0]']
global_max_pooling1d_6 (Global (None, 16) 0 ['conv1d_6[0][0]']
MaxPooling1D)
global_max_pooling1d_7 (Global (None, 16) 0 ['conv1d_7[0][0]']
MaxPooling1D)
global_max_pooling1d_8 (Global (None, 16) 0 ['conv1d_8[0][0]']
MaxPooling1D)
tf.concat_2 (TFOpLambda) (None, 48) 0 ['global_max_pooling1d_6[0][0]',
'global_max_pooling1d_7[0][0]',
'global_max_pooling1d_8[0][0]']
dense_2 (Dense) (None, 6) 294 ['tf.concat_2[0][0]']
==================================================================================================
Total params: 459,222
Trainable params: 459,222
Non-trainable params: 0
错误可能源自何处?
谢谢你,谢谢你
1条答案
按热度按时间yrefmtwq1#
如果你的输入不是整数,而是真实的,那么使用Embedding Layer不是一个好主意,因为当你的输入是Keras.utils.preprocessing.text.Tokenizer()的输出时,Keras.layers.Embedding()可以很好地工作。如果你想做一个NLP任务,那么使用Tokenizer();如果你的任务是分类,那么使用word 2 vec,在这种情况下它可以很好地工作。
Keras的嵌入层不接受负数来嵌入矢量,如果你想在最小-最大尺度上对你的特征进行分类,那么就进行word 2 vec矢量化,这就是为什么你要使用Keras嵌入层的原因。但是如果你想使用嵌入层,那么就使用输入应该与嵌入层兼容的管道。