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) は、渡されたグラフのものではありません。*