前回の続きです。tips的内容でAI学習とは直接関係ないのですが、一応書いておきます。
steganoライブラリを使って、画像ファイルにソースファイルの絶対パスと学習時間を不可視的に埋め込みました。画像の質については特に変化はありませんでした。
これでCSVへの記録が不要になり、データの散逸を防止できます。
from stegano import lsb
start = time.time()
def plot_loss_accuracy_graph(history):
process_time = time.time() - start
td = datetime.timedelta(seconds = process_time)
dt_now = datetime.datetime.now()
dt_now_str = dt_now.strftime('%y%m%d%H%M')
image_loss ='{}_loss.png'.format(dt_now_str)
fig = plt.figure()
plt.plot(history.history['loss'], "-D", color="blue", label="train_loss", linewidth=2)
plt.plot(history.history['val_loss'], "-D", color="black", label="val_loss", linewidth=2)
plt.title('LOSS')
fig.text(0.7, 0.95, os.path.basename(__file__))
fig.text(0.8, 0.03, str(td))
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend(loc='upper right')
plt.tight_layout()
fig.savefig(image_loss)
# ソースファイルの絶対パスと学習時間をリストにして画像に埋め込む
embed_text = '[' + os.path.abspath(__file__) + ',' + str(td) + ']'
image_loss2 = image_loss.split('.')[0] + '2.png'
secret = lsb.hide(image_loss, embed_text)
secret.save(image_loss2)
# 埋め込んだテキストを確認する
embed_text_loss = lsb.reveal(image_loss2)
print('embed_text_loss '+ embed_text_loss)