FrontPage
川口晏璃(かわぐちあんり)です.


おはよう
anya1.gif

2023学年歴.PNG

Page 

研究会? 

卒業論文/卒論ゼミ? 

修士論文/修論ゼミ? 

memo? 

?


[添付ファイル一覧] [全ページの添付ファイル一覧]
アップロード可能最大ファイルサイズは 16,384KB です。

Record 

【固定】☞memo?にいろんなことまとめてるよ.

最新の5件を表示しています。 コメントページを参照

  • 離散選択の論文(自分の研究に持っていけそうなもの)サーベイして次回発表 -- 2023-02-07 (火) 13:47:10
  • あなたが修士論文研究として取り組んでいる研究課題の概要(目的,方法,学術的「問い」など)を簡潔にまとめ,その研究内容と社会との関係について述べなさい(日本語1500 文字程度.ただし参考文献は除く). -- 2023-02-07 (火) 15:42:58
  • B3ゼミ(大森君卒論前半部分) なぞり運動における脳の習熟とインピーダンスの関連iie.lab.tpu.2122@gmail.com)の大森>保存期間5年>卒論概要>なぞり運動←動画あり -- 2023-02-13 (月) 10:47:59
  • 論文 離散,複数 -- 2023-04-21 (金) 15:04:50
  • 5月以降修論話し合い -- 2023-04-21 (金) 15:05:14
お名前:

Schedule 





です。\n\n# qiskitをインポートする\nfrom qiskit import Aer\nfrom qiskit.utils import QuantumInstance\nfrom qiskit.algorithms import QAOA\nfrom qiskit_optimization import QuadraticProgram\nfrom qiskit_optimization.algorithms import MinimumEigenOptimizer\n\n# 画像分割の目的関数を定義する\ndef objective_function(image_array, labels, k):\n # 領域内の均一性を計算する\n intra_region_homogeneity = 0\n for i in range(k):\n # i番目のクラスタに属するピクセルのインデックスを取得する\n cluster_indices = np.where(labels == i)[0]\n # i番目のクラスタに属するピクセルの色の平均値を計算する\n cluster_mean = np.mean(image_array[cluster_indices], axis=0)\n # i番目のクラスタに属するピクセルの色と平均値との距離の二乗和を計算する\n cluster_variance = np.sum(np.square(image_array[cluster_indices] - cluster_mean))\n # 領域内の均一性に加算する(最小化問題なので符号を反転させる)\n intra_region_homogeneity -= cluster_variance\n \n # 領域間の異質性を計算する\n inter_region_heterogeneity = 0\n for i in range(k):\n for j in range(i+1, k):\n # i番目とj番目のクラスタに属するピクセルの色の平均値を計算する\n cluster_i_mean = np.mean(image_array[labels == i], axis=0)\n cluster_j_mean = np.mean(image_array[labels == j], axis=0)\n # i番目とj番目のクラスタの平均値との距離の二乗を計算する\n cluster_distance = np.sum(np.square(cluster_i_mean - cluster_j_mean))\n # 領域間の異質性に加算する\n inter_region_heterogeneity += cluster_distance\n \n # 二つの目的関数の重み付き和を返す(重みは任意に設定できる)\n alpha = 0.5 # 領域内の均一性の重み\n beta = 0.5 # 領域間の異質性の重み\n return alpha * intra_region_homogeneity + beta * inter_region_heterogeneity\n\n# 画像分割問題を二次計画問題に変換する\ndef image_segmentation_to_qp(image_array, k):\n # 画像データを1次元に変換する\n image_data = image_array.reshape*1\n # 画像データのサイズを取得する\n n = len(image_data)\n # 二次計画問題を作成する\n qp = QuadraticProgram()\n # n*k個の量子ビットを用意する(各ピクセルがk個のクラスタのうちどれに属するかを表す)\n for i in range(n*k):\n qp.binary_var(name=f"x{i}")\n # 目的関数を設定する(各量子ビットに対応する係数を計算する)\n objective = qp.objective\n for i in range(n):\n for j in range(i+1, n):\n for p in range(k):\n for q in range(k):\n # i番目とj番目のピクセルが同じクラスタに属する場合の係数を計算する\n if p == q:\n coefficient = np.sum(np.square(image_data[i] - image_data[j]))\n objective.linear[f"x{i*k+p}"] += coefficient\n objective.linear[f"x{j*k+p}"] += coefficient\n objective.quadratic[(f"x{i*k+p}", f"x{j*k+p}")] -= 2 * coefficient\n # i番目とj番目のピクセルが異なるクラスタに属する場合の係数を計算する\n else:\n coefficient = np.sum(np.square(image_data[i] - image_data[j]))\n objective.quadratic[(f"x{i*k+p}", f"x{j*k+q}")] += 2 * coefficient\n # 制約条件を設定する(各ピクセルは一つのクラスタにしか属さない)\n for i in range(n):\n linear = {}\n for p in range(k):\n linear[f"x{i*k+p}"] = 1\n qp.linear_constraint(linear, "=", 1, name=f"c{i}")\n # 二次計画問題を返す\n return qp\n\n# 画像を読み込む\nfrom PIL import Image\nimage = Image.open("image.jpg")\n\n# 画像をRGBの3次元配列に変換する\nimport numpy as np\nimage_array = np.array(image)\n\n# 画像分割問題を二次計画問題に変換する\nk = 5 # クラスタ数は任意に設定できる\nqp = image_segmentation_to_qp(image_array, k)\n\n# 量子進化アルゴリズムを用いて二次計画問題を解く\nbackend = Aer.get_backend("qasm_simulator") # 量子シミュレーターを選択する\nquantum_instance = QuantumInstance(backend, shots=100) # 量子インスタンスを作成する\nqaoa = QAOA(quantum_instance=quantum_instance) # QAOAアルゴリズムを作成する\noptimizer = MinimumEigenOptimizer(qaoa) # 最小固有値最適化器を作成する\nresult = optimizer.solve(qp) # 二次計画問題を解く\n\n# 解から画像分割の結果を得る\nlabels = result.x.reshape*2.argmax(axis=1) # 各ピクセルにクラスタ番号を割り当てる\n\n# 目的関数の値を計算する\nobjective_value = objective_function(image_array, labels, k)\nprint(f"Objective value: {objective_value}")\nコピー\n受信したメッセージ. 3番の手順は、量子進化アルゴリズムによって、分割された画像に対して、領域内の均一性と領域間の異質性という二つの目的関数を同時に評価することです。Pythonで量子進化アルゴリズムを実装するには、qiskitというライブラリを使うのが便利です。以下は、qiskitを使って画像分割の目的関数を評価するコードの例です。 ```python # qiskitをインポートする from qiskit import Aer from qiskit.utils import QuantumInstance from qiskit.algorithms import QAOA from qiskit_optimization import QuadraticProgram from qiskit_optimization.algorithms import MinimumEigenOptimizer # 画像分割の目的関数を定義する def objective_function(image_array, labels, k): # 領域内の均一性を計算する intra_region_homogeneity = 0 for i in range(k): # i番目のクラスタに属するピクセルのインデックスを取得する cluster_indices = np.where(labels == i)[0] # i番目のクラスタに属するピクセルの色の平均値を計算する cluster_mean = np.mean(image_array[cluster_indices], axis=0) # i番目のクラスタに属するピクセルの色と平均値との距離の二乗和を計算する cluster_variance = np.sum(np.square(image_array[cluster_indices] - cluster_mean)) # 領域内の均一性に加算する(最小化問題なので符号を反転させる) intra_region_homogeneity -= cluster_variance # 領域間の異質性を計算する inter_region_heterogeneity = 0 for i in range(k): for j in range(i+1, k): # i番目とj番目のクラスタに属するピクセルの色の平均値を計算する cluster_i_mean = np.mean(image_array[labels == i], axis=0) cluster_j_mean = np.mean(image_array[labels == j], axis=0) # i番目とj番目のクラスタの平均値との距離の二乗を計算する cluster_distance = np.sum(np.square(cluster_i_mean - cluster_j_mean)) # 領域間の異質性に加算する inter_region_heterogeneity += cluster_distance # 二つの目的関数の重み付き和を返す(重みは任意に設定できる) alpha = 0.5 # 領域内の均一性の重み beta = 0.5 # 領域間の異質性の重み return alpha * intra_region_homogeneity + beta * inter_region_heterogeneity # 画像分割問題を二次計画問題に変換する def image_segmentation_to_qp(image_array, k): # 画像データを1次元に変換する image_data = image_array.reshape*3 # 画像データのサイズを取得する n = len(image_data) # 二次計画問題を作成する qp = QuadraticProgram() # n*k個の量子ビットを用意する(各ピクセルがk個のクラスタのうちどれに属するかを表す) for i in range(n*k
): qp.binary_var(name=f"x{i}") # 目的関数を設定する(各量子ビットに対応する係数を計算する) objective = qp.objective for i in range(n): for j in range(i+1, n): for p in range(k): for q in range(k): # i番目とj番目のピクセルが同じクラスタに属する場合の係数を計算する if p == q: coefficient = np.sum(np.square(image_data[i] - image_data[j])) objective.linear[f"x{i*k+p}"] += coefficient objective.linear[f"x{j*k+p}"] += coefficient objective.quadratic[(f"x{i*k+p}", f"x{j*k+p}")] -= 2 * coefficient # i番目とj番目のピクセルが異なるクラスタに属する場合の係数を計算する else: coefficient = np.sum(np.square(image_data[i] - image_data[j])) objective.quadratic[(f"x{i*k+p}", f"x{j*k+q}")] += 2 * coefficient # 制約条件を設定する(各ピクセルは一つのクラスタにしか属さない) for i in range(n): linear = {} for p in range(k): linear[f"x{i*k+p}"] = 1 qp.linear_constraint(linear, "=", 1, name=f"c{i}") # 二次計画問題を返す return qp # 画像を読み込む from PIL import Image image = Image.open("image.jpg") # 画像をRGBの3次元配列に変換する import numpy as np image_array = np.array(image) # 画像分割問題を二次計画問題に変換する k = 5 # クラスタ数は任意に設定できる qp = image_segmentation_to_qp(image_array, k) # 量子進化アルゴリズムを用いて二次計画問題を解く backend = Aer.get_backend("qasm_simulator") # 量子シミュレーターを選択する quantum_instance = QuantumInstance(backend, shots=100) # 量子インスタンスを作成する qaoa = QAOA(quantum_instance=quantum_instance) # QAOAアルゴリズムを作成する optimizer = MinimumEigenOptimizer(qaoa) # 最小固有値最適化器を作成する result = optimizer.solve(qp) # 二次計画問題を解く # 解から画像分割の結果を得る labels = result.x.reshape*4.argmax(axis=1) # 各ピクセルにクラスタ番号を割り当てる # 目的関数の値を計算する objective_value = objective_function(image_array, labels, k) print(f"Objective value: {objective_value}") ```\n4\n/\n30\n4番をpythnコードで書いてみて\n送信済みメッセージ. 4番をpythnコードで書いてみて\n4番の手順は、量子進化アルゴリズムによって、分割された画像を変異させたり、近傍の領域を結合したりすることで、パレート最適解の集合に近づくように探索することです。Pythonで量子進化アルゴリズムを実装するには、qiskitというライブラリを使うのが便利です。以下は、qiskitを使って画像分割の探索を行うコードの例です。\n\n# qiskitをインポートする\nfrom qiskit import Aer\nfrom qiskit.utils import QuantumInstance\nfrom qiskit.algorithms import QAOA\nfrom qiskit_optimization import QuadraticProgram\nfrom qiskit_optimization.algorithms import MinimumEigenOptimizer\n\n# 画像分割の目的関数を定義する\ndef objective_function(image_array, labels, k):\n # 領域内の均一性を計算する\n intra_region_homogeneity = 0\n for i in range(k):\n # i番目のクラスタに属するピクセルのインデックスを取得する\n cluster_indices = np.where(labels == i)[0]\n # i番目のクラスタに属するピクセルの色の平均値を計算する\n cluster_mean = np.mean(image_array[cluster_indices], axis=0)\n # i番目のクラスタに属するピクセルの色と平均値との距離の二乗和を計算する\n cluster_variance = np.sum(np.square(image_array[cluster_indices] - cluster_mean))\n # 領域内の均一性に加算する(最小化問題なので符号を反転させる)\n intra_region_homogeneity -= cluster_variance\n \n # 領域間の異質性を計算する\n inter_region_heterogeneity = 0\n for i in range(k):\n for j in range(i+1, k):\n # i番目とj番目のクラスタに属するピクセルの色の平均値を計算する\n cluster_i_mean = np.mean(image_array[labels == i], axis=0)\n cluster_j_mean = np.mean(image_array[labels == j], axis=0)\n # i番目とj番目のクラスタの平均値との距離の二乗を計算する\n cluster_distance = np.sum(np.square(cluster_i_mean - cluster_j_mean))\n # 領域間の異質性に加算する\n inter_region_heterogeneity += cluster_distance\n \n # 二つの目的関数の重み付き和を返す(重みは任意に設定できる)\n alpha = 0.5 # 領域内の均一性の重み\n beta = 0.5 # 領域間の異質性の重み\n return alpha * intra_region_homogeneity + beta * inter_region_heterogeneity\n\n# 画像分割問題を二次計画問題に変換する\ndef image_segmentation_to_qp(image_array, k):\n # 画像データを1次元に変換する\n image_data = image_array.reshape*5\n # 画像データのサイズを取得する\n n = len(image_data)\n # 二次計画問題を作成する\n qp = QuadraticProgram()\n # n*k個の量子ビットを用意する(各ピクセルがk個のクラスタのうちどれに属するかを表す)\n for i in range(n*k):\n qp.binary_var(name=f"x{i}")\n # 目的関数を設定する(各量子ビットに対応する係数を計算する)\n objective = qp.objective\n for i in range(n):\n for j in range(i+1, n):\n for p in range(k):\n for q in range(k):\n # i番目とj番目のピクセルが同じクラスタに属する場合の係数を計算する\n if p == q:\n coefficient = np.sum(np.square(image_data[i] - image_data[j]))\n objective.linear[f"x{i*k+p}"] += coefficient\n objective.linear[f"x{j*k+p}"] += coefficient\n objective.quadratic[(f"x{i*k+p}", f"x{j*k+p}")] -= 2 * coefficient\n # i番目とj番目のピクセルが異なるクラスタに属する場合の係数を計算する\n else:\n coefficient = np.sum(np.square(image_data[i] - image_data[j]))\n objective.quadratic[(f"x{i*k+p}", f"x{j*k+q}")] += 2 * coefficient\n # 制約条件を設定する(各ピクセルは一つのクラスタにしか属さない)\n for i in range(n):\n linear = {}\n for p in range(k):\n linear[f"x{i*k+p}"] = 1\n qp.linear_constraint(linear, "=", 1, name=f"c{i}")\n # 二次計画問題を返す\n return qp\n\n# 画像分割の探索を行う関数を定義する\ndef image_segmentation_search(image_array, k, max_iter):\n # 画像データを1次元に変換する\n image_data = image_array.reshape*6\n # 画像データのサイズを取得する\n n = len(image_data)\n # 初期解としてk-meansアルゴリズムの結果を使用する\n from sklearn.cluster import KMeans\n kmeans = KMeans(n_clusters=k, random_state=0)\n kmeans.fit(image_data)\n labels = kmeans.labels_\n # 初期解の目的関数の値を計算する\n best_value = objective_function(image_array, labels, k)\n print(f"Initial value: {best_value}")\n # 最適化の反復回数を設定する\n iteration = 0\n # 最適化を開始する\n while iteration < max_iter:\n # 画像分割問題を二次計画問題に変換する\n qp = image_segmentation_to_qp(image_array, k)\n # 量子進化アルゴリズムを用いて二次計画問題を解く\n backend = Aer.get_backend("qasm_simulator")

# 量子シミュレーターを選択する\n quantum_instance = QuantumInstance(backend, shots=100) # 量子インスタンスを作成する\n qaoa = QAOA(quantum_instance=quantum_instance) # QAOAアルゴリズムを作成する\n optimizer = MinimumEigenOptimizer(qaoa) # 最小固有値最適化器を作成する\n result = optimizer.solve(qp) # 二次計画問題を解く\n\n # 解から画像分割の結果を得る\n labels = result.x.reshape*7.argmax(axis=1) # 各ピクセルにクラスタ番号を割り当てる\n\n # 目的関数の値を計算する\n objective_value = objective_function(image_array, labels, k)\n print(f"Iteration {iteration}: {objective_value}")\n\n # 目的関数の値が改善されたら、最良解として更新する\n if objective_value < best_value:\n best_value = objective_value\n \n # 反復回数を増やす\n iteration += 1\n \n # 最適化が終了したら、最良解とその目的関数の値を返す\n return labels, best_value\n\n# 画像を読み込む\nfrom PIL import Image\nimage = Image.open("image.jpg")\n\n# 画像をRGBの3次元配列に\nコピー\n受信したメッセージ. 4番の手順は、量子進化アルゴリズムによって、分割された画像を変異させたり、近傍の領域を結合したりすることで、パレート最適解の集合に近づくように探索することです。Pythonで量子進化アルゴリズムを実装するには、qiskitというライブラリを使うのが便利です。以下は、qiskitを使って画像分割の探索を行うコードの例です。 ```python # qiskitをインポートする from qiskit import Aer from qiskit.utils import QuantumInstance from qiskit.algorithms import QAOA from qiskit_optimization import QuadraticProgram from qiskit_optimization.algorithms import MinimumEigenOptimizer # 画像分割の目的関数を定義する def objective_function(image_array, labels, k): # 領域内の均一性を計算する intra_region_homogeneity = 0 for i in range(k): # i番目のクラスタに属するピクセルのインデックスを取得する cluster_indices = np.where(labels == i)[0] # i番目のクラスタに属するピクセルの色の平均値を計算する cluster_mean = np.mean(image_array[cluster_indices], axis=0) # i番目のクラスタに属するピクセルの色と平均値との距離の二乗和を計算する cluster_variance = np.sum(np.square(image_array[cluster_indices] - cluster_mean)) # 領域内の均一性に加算する(最小化問題なので符号を反転させる) intra_region_homogeneity -= cluster_variance # 領域間の異質性を計算する inter_region_heterogeneity = 0 for i in range(k): for j in range(i+1, k): # i番目とj番目のクラスタに属するピクセルの色の平均値を計算する cluster_i_mean = np.mean(image_array[labels == i], axis=0) cluster_j_mean = np.mean(image_array[labels == j], axis=0) # i番目とj番目のクラスタの平均値との距離の二乗を計算する cluster_distance = np.sum(np.square(cluster_i_mean - cluster_j_mean)) # 領域間の異質性に加算する inter_region_heterogeneity += cluster_distance # 二つの目的関数の重み付き和を返す(重みは任意に設定できる) alpha = 0.5 # 領域内の均一性の重み beta = 0.5 # 領域間の異質性の重み return alpha * intra_region_homogeneity + beta * inter_region_heterogeneity # 画像分割問題を二次計画問題に変換する def image_segmentation_to_qp(image_array, k): # 画像データを1次元に変換する image_data = image_array.reshape*8 # 画像データのサイズを取得する n = len(image_data) # 二次計画問題を作成する qp = QuadraticProgram() # n*k個の量子ビットを用意する(各ピクセルがk個のクラスタのうちどれに属するかを表す) for i in range(n*k): qp.binary_var(name=f"x{i}") # 目的関数を設定する(各量子ビットに対応する係数を計算する) objective = qp.objective for i in range(n): for j in range(i+1, n): for p in range(k): for q in range(k): # i番目とj番目のピクセルが同じクラスタに属する場合の係数を計算する if p == q: coefficient = np.sum(np.square(image_data[i] - image_data[j])) objective.linear[f"x{i*k+p}"] += coefficient objective.linear[f"x{j*k+p}"] += coefficient objective.quadratic[(f"x{i*k+p}", f"x{j*k+p}")] -= 2 * coefficient # i番目とj番目のピクセルが異なるクラスタに属する場合の係数を計算する else: coefficient = np.sum(np.square(image_data[i] - image_data[j])) objective.quadratic[(f"x{i*k+p}", f"x{j*k+q}")] += 2 * coefficient # 制約条件を設定する(各ピクセルは一つのクラスタにしか属さない) for i in range(n): linear = {} for p in range(k): linear[f"x{i*k+p}"] = 1 qp.linear_constraint(linear, "=", 1, name=f"c{i}") # 二次計画問題を返す return qp # 画像分割の探索を行う関数を定義する def image_segmentation_search(image_array, k, max_iter): # 画像データを1次元に変換する image_data = image_array.reshape*9 # 画像データのサイズを取得する n = len(image_data) # 初期解としてk-meansアルゴリズムの結果を使用する from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=k, random_state=0) kmeans.fit(image_data) labels = kmeans.labels_ # 初期解の目的関数の値を計算する best_value = objective_function(image_array, labels, k) print(f"Initial value: {best_value}") # 最適化の反復回数を設定する iteration = 0 # 最適化を開始する while iteration < max_iter: # 画像分割問題を二次計画問題に変換する qp = image_segmentation_to_qp(image_array, k) # 量子進化アルゴリズムを用いて二次計画問題を解く backend = Aer.get_backend("qasm_simulator") # 量子シミュレーターを選択する quantum_instance = QuantumInstance(backend, shots=100) # 量子インスタンスを作成する qaoa = QAOA(quantum_instance=quantum_instance) # QAOAアルゴリズムを作成する optimizer = MinimumEigenOptimizer(qaoa) # 最小固有値最適化器を作成する result = optimizer.solve(qp) # 二次計画問題を解く # 解から画像分割の結果を得る labels = result.x.reshape*10.argmax(axis=1) # 各ピクセルにクラスタ番号を割り当てる # 目的関数の値を計算する objective_value = objective_function(image_array, labels, k) print(f"Iteration {iteration}: {objective_value}") # 目的関数の値が改善されたら、最良解として更新する if objective_value < best_value: best_value = objective_value # 反復回数を増やす iteration += 1 # 最適化が終了したら、最良解とその目的関数の値を返す return labels, best_value # 画像を読み込む from PIL import Image image = Image.open("image.jpg") # 画像をRGBの3次元配列に\n5\n/\n30\n続きを出力してください\n送信済みメッセージ. 続きを出力してください\n続きは以下の通りです。\n\n# 画像をRGBの3次元配列に変換する\nimport numpy as np\nimage_array = np.array(image)\n\n# 画像分割の探索を行う\nk = 5 # クラスタ数は任意に設定できる\nmax_iter = 10 # 最適化の反復回数は任意に設定できる\nlabels, best_value = image_segmentation_search(image_array, k, max_iter)\nprint(f"Best value: {best_value}")\n\n# 画像分割の結果を保存する\nnew_image_data = np.zeros_like(image_array)\nfor i in range(k):\n # i番目のクラスタの中心点の色を取得する\n cluster_center = np.mean(image_array[labels == i], axis=0)\n # i番目のクラ



*1 -1, 3
*2 -1, k
*3 -1, 3
*4 -1, k
*5 -1, 3
*6 -1, 3
*7 -1, k
*8 -1, 3
*9 -1, 3
*10 -1, k

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS