Я работаю над моделью, выполняющей задачу классификации, которая выглядит так:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, 150, 300) 1958100
_________________________________________________________________
dropout (Dropout) (None, 150, 300) 0
_________________________________________________________________
separable_conv1d (SeparableC (None, 150, 64) 20164
_________________________________________________________________
separable_conv1d_1 (Separabl (None, 150, 64) 4352
_________________________________________________________________
max_pooling1d (MaxPooling1D) (None, 50, 64) 0
_________________________________________________________________
separable_conv1d_2 (Separabl (None, 50, 128) 8512
_________________________________________________________________
separable_conv1d_3 (Separabl (None, 50, 128) 16896
_________________________________________________________________
global_average_pooling1d (Gl (None, 128) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 128) 0
_________________________________________________________________
dense (Dense) (None, 128) 16512
_________________________________________________________________
dense_1 (Dense) (None, 46) 5934
=================================================================
Total params: 2,030,470
Trainable params: 72,370
Non-trainable params: 1,958,100
_________________________________________________________________
Сложная часть этой проблемы в том, что у меня много классов (46), но относительно небольшой объем данных. Я хочу использовать nce_loss, чтобы узнать сходство между каждым наблюдением. Ниже приведена моя реализация nce:
loss = tf.reduce_mean(
input_tensor=tf.nn.sampled_softmax_loss(weights=softmax_weights, biases=softmax_biases,
inputs=model.get_layer('dense').output,labels=train_y, num_sampled=num_sampled, num_classes=num_classes))
Я не уверен, как правильно назначить inputs=model.get_layer('dense').output
здесь. Я предположил, что входные данные должны быть пакетными выходами от предпоследнего слоя «плотный»? Когда я пытался скомпилировать, я получил сообщение об ошибке:
"OperatorNotAllowedInGraphError: использование tf.Tensor
в качестве Python bool
недопустимо при выполнении Graph. Используйте нетерпеливое выполнение или украсьте эту функцию @tf. функция "