OpenMythosのサンプルプログラムを動かしました

1.概要 前回、OpenMythosの環境構築まで実現したので、GitHubにあるサンプルプログラム(Usage)を動かしてみました。一部エラーが発生しましたが、結果出力部分なので修正をしました。その内容を記述します。 2.詳細 Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成します。 $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py 下記エラーとなります [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) Traceback (most recent call last):   File "/home/nakasima/openmythos/openmythos_usage.py", line 48, in <module>     rho = torch.linalg.eigvals(A).abs().max().item()           ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: linalg.eig: The input tensor A must have at least 2 dimensions. コードの下記部分を修正します #rho = torch.linalg.eigvals(A).abs().max().item() rho = A.abs().max().item() $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) [MLA] Spectral radius ρ(A) = 0.3679 (mus...

json形式をyaml形式に相互変換を試しました

1.概要

Pythonプログラムでデータ定義用途でjson形式を良く利用していました。yaml形式でデータ定義されたものを参照する機会があり、jsonとyamlの関係について、テストプログラムで調べてみました。Pythonプログラムは、json形式もyaml形式も辞書(dic)になるので同じ扱いになります。また、json形式をyaml形式に変換、yaml形式をjson形式へ変換も実施してみました。この内容を記述します。

2.詳細

(a) 試験データ作成
(b) 試験プログラム作成
(c) 実行結果

(a) 試験データ作成
test.json を以下のように作成

{
    "node_a": {
        "type": "int",
        "length": "4"
    },
    "node_b": {
        "type": "float",
        "length": "8"
    },
    "node_c": {
        "type": "char",
        "length": "1"
    }
}

test.yamlを以下のように作成

node_a:
    type: "int"
    length: "4"
node_b:
    type: "float"
    length: "8"
node_c:
    type: "char"
    length: "1"

(b) 試験プログラム作成
#!/usr/bin/python3

import yaml
import json

class YamlJson:

    def ReadJson(self, filename):
        with open(filename, 'r') as f:
            obj = json.load(f)
            conv = yaml.dump(obj)
            return obj, conv

    def ReadYaml(self, filename):
        with open(filename, 'r') as f:
            obj = yaml.safe_load(f)
            conv = json.dumps(obj)
            return obj, conv

    def PrintObj(self, obj):
        print(obj)
        print()
        print(obj['node_a'])
        print(obj['node_a']['type'])
        print(obj['node_a']['length'])
        print(obj['node_b'])
        print(obj['node_c'])

if  __name__ == '__main__':
    obj = YamlJson()
    jsony, convj = obj.ReadJson('./test.json')
    obj.PrintObj(jsony)
    print(convj)
    print()
    yamlj, convy = obj.ReadYaml('./test.yaml')
    obj.PrintObj(yamlj)
    print(convy)

(c) 実行結果
json形式もyaml形式も読込み時点で辞書形式になり、Pythonプログラムからは同じ扱いになります。これらを異なる形式へ変換する処理も組み込まれていますが、入力した形とは少し異なる形になってしまいます。

参考
[外部サイト参照]
PythonでのJSONとYAML/TOMLの相互変換

コメント

このブログの人気の投稿

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

LinuxMint-22.3にWine 11.6をサクッと入れてみました

LinuxMint 21.3にWinBoat導入を試してみました