1

Sagemaker でのテスト分類に tensorflow で python SDk を使用しようとしています。このhttps://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/tensorflow_abalone_age_predictor_using_keras/abalone.pyを変更して実行できますが、アーチを変更して埋め込みレイヤーを含めると、エラーが発生します

「フェッチ引数は Tensor として解釈できません。(Tensor Tensor("first-layer/embeddings:0", shape=(*, ), dtype=float32_ref) は、このグラフの要素ではありません。」

スタンドアロンモデルとして実行すると、完全に実行されます。ここにスタンドアロンモデルのアーチがあります

model = Sequential()
model.add(Embedding(len(word_index) + 1,
                        EMBEDDING_DIM,
                        weights=[embedding_matrix],
                        input_length=MAX_SEQUENCE_LENGTH,
                        trainable=False))

model.add(Conv1D(64, kernel_size=10, padding='same', activation='relu'))
model.add(Conv1D(64, kernel_size=15, padding='same', activation='selu'))
model.add(Conv1D(128, kernel_size=15, padding='same', activation='relu'))
model.add(Conv1D(64, kernel_size=25, padding='same', activation='softmax'))
model.add(Conv1D(128, kernel_size=15, padding='same', activation='relu'))
model.add(BatchNormalization())

model.add(Flatten())
model.add(Dense(2, activation='softmax'))

Sagemaker の model_fn は次のとおりです。

embedding = tf.keras.layers.Embedding(len(word_index) + 1,
                            EMBEDDING_DIM,
                            weights=[embedding_matrix],
                            input_length=MAX_SEQUENCE_LENGTH,
                            trainable=False, name='first-layer')(features[INPUT_TENSOR_NAME])

first = tf.keras.layers.Conv1D(64, kernel_size=10, padding='same', activation='relu')(embedding)
second = tf.keras.layers.Conv1D(64, kernel_size=15, padding='same', activation='relu')(first)
 third = tf.keras.layers.Conv1D(128, kernel_size=15, padding='same', activation='relu')(second)
 fourth = tf.keras.layers.Conv1D(64, kernel_size=25, padding='same', activation='softmax')(third)
 fifth = tf.keras.layers.Conv1D(128, kernel_size=15, padding='same', activation='relu')(fourth)
sixth = tf.keras.layers.BatchNormalization()(fifth)

output = tf.keras.layers.Flatten()(sixth)
output_layer = tf.keras.layers.Dense(2, activation='softmax'))(output)

入力の次元や値に問題はありません。このアーチを高密度レイヤーのみの単純なアーチに置き換えると、コードは完全に機能します。

私はすでに TensorFlow で解決策を試しました: テンソルはこのグラフの要素ではありませんが、新しいエラーが発生します

入力グラフとレイヤー グラフは同じではありません: Tensor("random_shuffle_queue_DequeueMany:1", shape=(128, 200), dtype=float32, device=/device:CPU:0) は、渡されたグラフのものではありません。*

4

0 に答える 0