混合ガウス分布とのアライメントを計算するため、入力データをソートします。分布の精度を計算します。混合ガウス分布からの輸送コストを計算するため、分布を入力データと同じ数に分割します。右向き輸送と左向き輸送の切り替え位置をあわせて計算します。積分のため変数変換を行います。推論の過程をグラフにレンタリングします。指定し、パラメータを更新します。イテレーション毎にグラフを表示します。回レンタリングを実行します。グラフの大きさを設定します。ガウス分布の数、推論の繰り返し回数を設定します。距離の近似計算に使う積分方向の数を設定します。場合厳密な計算になります。距離の計算に固定の積分方向を加える場合はここで入力します。距離の次数を設定します。どちらを使うかを選択し、推論を行います。推論が終わったらグラフを表示して停止します。pl.show()実行結果このプログラムを実行すると次の動作になります。距離の計算に使う方向ベクトルもレンタリングされるのですが、チカチカしすぎるので消しました...。つの方向ベクトルを使っています。各イテレーション毎に異なる方向ベクトルに沿った勾配が得られるため、各コンポーネントがゆらゆらと揺れています。軸に沿った各データ点ごとの輸送コスト、左下は累積密度関数のアライメントです。この値はグラフを作成するために推論プロセス外で別途計算しています。距離の近似値の履歴を表示しています。軸方向の学習が進みません。観測データの次元数と同じ数の方向ベクトルを与えても上手くいかないことがあります。軸をあわせた同時分布の推論に失敗しています。このため、推論の過程では観測データの次元数より多くの方向ベクトルを使う必要があります。距離で作成しています。軸に加え斜めの軸を追加すると推論はほぼ正しく進みます。