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

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

Connectez-vous pour commenter.

 Réponse acceptée

Kojiro Saito
Kojiro Saito le 6 Jan 2023

1 vote

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 commentaire

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB Web App Server dans Centre d'aide et File Exchange

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!