機械学習済みの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 Comments

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 on 3 Jan 2023
Moved: Atsushi Ueno on 4 Jan 2023
ご返信が遅くなってしまい申し訳ございません。
説明がわかりづらく申し訳ございません。
現状の状況を整理いたします。
・A.ctfというファイルがwebapp server上にアップロードされている
・このAというアプリより、機械学習済みのデータB.matを読み込みたい
・ただ、Aというアプリのディレクトリがセッションごとに変わってしまう
・web app serverでディレクトリを絶対指定しようとすると、web app serverではディレクトリを指定することができないと表示される
という現状です。
下記と同様の事例な気がしますが、同解決しているのか理解できていません。
以上、お手数ですがご確認のほどお願いいたします。
soh
soh on 4 Jan 2023
ありがとうございます。
「機械学習済みのmodelファイルをここに動かす」の部分ですが、これは事前に「model_path」の中に私が手動で「model1.mat」を入れるということでしょうか。
Atsushi Ueno
Atsushi Ueno on 5 Jan 2023
>「機械学習済みのmodelファイルをここに動かす」の部分ですが、これは事前に「model_path」の中に私が手動で「model1.mat」を入れるということでしょうか。
はいその通りです。私がweb app serverを動かす環境を持たない状態で回答しているのでこの様な事態になっています。具体的に何が起きているのか、私が詳細を想定出来ていません。
上記リンクの回答ではuigetfile関数を使っています。即ち自分でフォルダを選ぶ様にという事です。これは@sohさんが下記の通り行っている事と同じだと思います。
>このmodelのファイルは、私が「app.appDirectory」のpathを参考に手動でいれています。
soh
soh on 9 Jan 2023
ありがとうございます。
今回はweb app server においての動作もあわせての確認であったため、ご指摘いただいた方法では手動でずっと行う必要がありました。
よって、回答は別の方を採用させていただきました。

Sign in to comment.

 Accepted Answer

Kojiro Saito
Kojiro Saito on 6 Jan 2023
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 Comment

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

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Web App Server in Help Center and File Exchange

Products

Release

R2022b

Asked:

soh
on 21 Dec 2022

Commented:

soh
on 9 Jan 2023

Community Treasure Hunt

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

Start Hunting!