У меня есть этот скрипт, в котором я хочу получить обратные вызовы в отдельный файл CSV в контейнере docker собственного скрипта sagemaker. Но когда я пытаюсь запустить в локальном режиме, он не дает следующую ошибку. У меня есть задание гиперпараметрической настройки (HPO), и оно продолжает давать мне ошибки. Мне нужно, чтобы этот локальный режим работал правильно, прежде чем делать HPO.
![enter image description here](https://i.stack.imgur.com/de522.jpg)
В записной книжке я использую следующий код.
from sagemaker.tensorflow import TensorFlow
tf_estimator = TensorFlow(entry_point='lstm_model.py',
role=role,
code_location=custom_code_upload_location,
output_path=model_artifact_location+'/',
train_instance_count=1,
train_instance_type='local',
framework_version='1.12',
py_version='py3',
script_mode=True,
hyperparameters={'epochs': 1},
base_job_name='hpo-lstm-local-test'
)
tf_estimator.fit({'training': training_input_path, 'validation': validation_input_path})
В моем lstm_model.py В скрипте используется следующий код.
lgdir = os.path.join(model_dir, 'callbacks_log.csv')
csv_logger = CSVLogger(lgdir, append=True)
regressor.fit(x_train, y_train, batch_size=batch_size,
validation_data=(x_val, y_val),
epochs=epochs,
verbose=2,
callbacks=[csv_logger]
)
Я пытался создать файл перед этим, как показано ниже, используя бэкэнд тензор потока. Но это не создает файл. (K: tenorflow Backend, tf: tenorflow)
filename = tf.Variable(lgdir , tf.string)
content = tf.Variable("", tf.string)
sess = K.get_session()
tf.io.write_file(filename, content)
Я не могу использовать другие пакеты, такие как pandas, для создания файла, так как контейнер TensorFlow docker в SageMaker для пользовательских сценариев не предоставить им. Они дают только ограниченное количество пакетов.
Есть ли способ, которым я могу записать файл csv в область памяти S3 до того, как метод fit попытается написать обратный вызов. Или это решение проблемы? Я не уверена.
Если вы даже можете предложить другие предложения, чтобы получить обратные вызовы, я бы даже принял этот ответ. Но это должно стоить усилий.
Это docker изображение действительно сужает область видимости.