機械学習済みのmat​ファイルをweb app serverに​て読み込む方法

現在アプリにて機械学習済みのmatファイルをweb app serverに​て読み込みたいです。(app designerで制作したアプリです)
現状としては、
app.appDirectory = fileparts(mfilename('fullpath'));
にてアプリのディレクトリを取得し、その後
cd('model')
として機械学習済みのmodelが入っているファイルを参照し、load('model1.mat')のような形で、matファイルの中にあるmodel1.matを読み込んでおります。(modelの中にあるmatファイルは複数あります。)
このmodelのファイルは、私が「app.appDirectory」のpathを参考に手動でいれています。
ただバージョンを変えるごとに、「app.appDirectory」のpathがかわるため、毎回modelのファイルを動かすのが手間に感じております。
これよりいい方法で、matファイルを読み込む方法はないのでしょうか。

5 件のコメント

Atsushi Ueno
Atsushi Ueno 2022 年 12 月 23 日
移動済み: Atsushi Ueno 2023 年 1 月 4 日
MATLAB Answersのサーバで動くMATLABでも再現します(プログラムを実行する度に path が変わります)
chang_path = fileparts(mfilename('fullpath')) % 本プログラムが存在するフォルダ(毎回変わる)
chang_path = '/tmp/Editor_eqozx'
model_path = [chang_path, filesep, 'test', filesep, 'model'] % モデル用フォルダのパス(例)
model_path = '/tmp/Editor_eqozx/test/model'
mkdir(model_path) % モデル用フォルダを作成
fclose(fopen([model_path, filesep, 'model1.mat'],'w')); % 機械学習済みのmodelファイルをここに動かす(テスト用に新規作成)
ls(model_path)
model1.mat
soh
soh 2023 年 1 月 3 日
移動済み: Atsushi Ueno 2023 年 1 月 4 日
ご返信が遅くなってしまい申し訳ございません。
説明がわかりづらく申し訳ございません。
現状の状況を整理いたします。
・A.ctfというファイルがwebapp server上にアップロードされている
・このAというアプリより、機械学習済みのデータB.matを読み込みたい
・ただ、Aというアプリのディレクトリがセッションごとに変わってしまう
・web app serverでディレクトリを絶対指定しようとすると、web app serverではディレクトリを指定することができないと表示される
という現状です。
下記と同様の事例な気がしますが、同解決しているのか理解できていません。
以上、お手数ですがご確認のほどお願いいたします。
soh
soh 2023 年 1 月 4 日
ありがとうございます。
「機械学習済みのmodelファイルをここに動かす」の部分ですが、これは事前に「model_path」の中に私が手動で「model1.mat」を入れるということでしょうか。
Atsushi Ueno
Atsushi Ueno 2023 年 1 月 5 日
>「機械学習済みのmodelファイルをここに動かす」の部分ですが、これは事前に「model_path」の中に私が手動で「model1.mat」を入れるということでしょうか。
はいその通りです。私がweb app serverを動かす環境を持たない状態で回答しているのでこの様な事態になっています。具体的に何が起きているのか、私が詳細を想定出来ていません。
上記リンクの回答ではuigetfile関数を使っています。即ち自分でフォルダを選ぶ様にという事です。これは@sohさんが下記の通り行っている事と同じだと思います。
>このmodelのファイルは、私が「app.appDirectory」のpathを参考に手動でいれています。
soh
soh 2023 年 1 月 9 日
ありがとうございます。
今回はweb app server においての動作もあわせての確認であったため、ご指摘いただいた方法では手動でずっと行う必要がありました。
よって、回答は別の方を採用させていただきました。

サインインしてコメントする。

 採用された回答

Kojiro Saito
Kojiro Saito 2023 年 1 月 6 日

1 投票

Webアプリはアクセスする毎にセッションフォルダーが変わってしまいますが、「Web アプリコンパイラー」で「アプリに実行に必要なファイル」にフォルダーを追加してパッケージに含めれば、
load(fullfile('models', 'trainedModel.mat'))
のようにフォルダー名とmatファイル名をfullfileでつなげて読み込みできます。
matファイルの実体はWindowsだと
C:\ProgramData\MathWorks\webapps\R2022b\USR\.appCache\mcrCache9.13\myPred\myPredictApp\models\trainedModel.mat
のようにアプリのキャッシュフォルダーの中に配置されるので、セッションによらず同じmatファイルを使用することができます。

1 件のコメント

soh
soh 2023 年 1 月 9 日
ありがとうございます。
ご指示通り行ったところ無事解決いたしました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMATLAB Web App Server についてさらに検索

製品

リリース

R2022b

質問済み:

soh
2022 年 12 月 21 日

コメント済み:

soh
2023 年 1 月 9 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!