質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

PERCEPTION NEURON

PERCEPTION NEURONは、Noitom社が開発・販売しているモーションキャプチャーデバイス。多くのニューロン・センサーを同時に処理することで、リアルタイムのモーションデータ作成ができます。Wi-Fi経由とUSB経由どちらにも対応可能です。

Neural Network Console

Neural Network Consoleは、ソニー社が開発したディープラーニング・ツール。ニューラルネットワークを視覚的に設計することが可能で、学習や評価をスムーズに実現できます。また、ニューラルネットワークを自動的に構築する機能も備わっています。

Q&A

0回答

375閲覧

ホップフィールドニューラルネットワークの問題が分かりません

Saitou

総合スコア0

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

PERCEPTION NEURON

PERCEPTION NEURONは、Noitom社が開発・販売しているモーションキャプチャーデバイス。多くのニューロン・センサーを同時に処理することで、リアルタイムのモーションデータ作成ができます。Wi-Fi経由とUSB経由どちらにも対応可能です。

Neural Network Console

Neural Network Consoleは、ソニー社が開発したディープラーニング・ツール。ニューラルネットワークを視覚的に設計することが可能で、学習や評価をスムーズに実現できます。また、ニューラルネットワークを自動的に構築する機能も備わっています。

0グッド

0クリップ

投稿2022/05/17 08:30

#include <stdlib.h>
#include <stdio.h>

#define n_neuron 120
#define n_pattern 4
#define n_row 10
#define n_column 12
#define noise_rate 0.20

int pattern[n_pattern][n_neuron] = {
{1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1},
{1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1,
1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1,
1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1,
1, 1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1,
1, -1, -1, 1, 1, -1, -1, 1, 1, 1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, 1, 1, 1, 1, 1, -1, -1, 1, 1,
1, -1, -1, 1, 1, 1, 1, 1, -1, -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1}};

int w[n_neuron][n_neuron];
int v[n_neuron];
//
/* Output the patterns, to confirm they are the desired ones */
/
/
void Output_Pattern(int k)
{
int i, j;

printf("Pattern[%d]:\n", k); for (i = 0; i < n_row; i++) { for (j = 0; j < n_column; j++) printf("%2c", (pattern[k][i * n_column + j] == -1) ? '*' : ' '); printf("\n"); } printf("\n\n\n"); getchar();

}

//
/* Output the state of the network in the form of a picture */
/
/
void Output_State(int k)
{
int i, j;

printf("%d-th iteration:\n", k); for (i = 0; i < n_row; i++) { for (j = 0; j < n_column; j++) printf("%2c", (v[i * n_column + j] == -1) ? '*' : ' '); printf("\n"); } printf("\n\n\n"); getchar();

}

//
/* Store the patterns into the network */
/
/
void Store_Pattern()
{
int i, j, k;

for (i = 0; i < n_neuron; i++) { for (j = 0; j < n_neuron; j++) { w[i][j] = 0; for (k = 0; k < n_pattern; k++) w[i][j] += pattern[k][i] * pattern[k][j]; w[i][j] /= (double)n_pattern; } w[i][i] = 0; }

}

//
/* Recall the m-th pattern from the network /
/
The pattern is corrupted by some noises */
/
/
void Recall_Pattern(int m)
{
int i, j, k;
int n_update;
int net, vnew;
double r;

for (i = 0; i < n_neuron; i++) { r = (double)(rand() % 10001) / 10000.0; if (r < noise_rate) v[i] = (pattern[m][i] == 1) ? -1 : 1; else v[i] = pattern[m][i]; } Output_State(0); /* show the noisy input pattern */ k = 1; do { n_update = 0; for (i = 0; i < n_neuron; i++) { net = 0; for (j = 0; j < n_neuron; j++) net += w[i][j] * v[j]; if (net >= 0) vnew = 1; if (net < 0) vnew = -1; if (vnew != v[i]) { n_update++; v[i] = vnew; } } Output_State(k); /* show the current result */ k++; } while (n_update != 0);

}

//
/* Initialize the weights */
/
/
void Initialization()
{
int i, j;

for (i = 0; i < n_neuron; i++) for (j = 0; j < n_neuron; j++) w[i][j] = 0;

}

//
/* The main program */
/
/
int main()
{
int k;

for (k = 0; k < n_pattern; k++) Output_Pattern(k); Initialization(); Store_Pattern(); for (k = 0; k < n_pattern; k++) Recall_Pattern(k);

}

ホップフィールドニューラルネットワークに12x10個のニューロンがあるとする。以下のように与えられたいくつかのパターンをネットワークに格納し、そのうちのどれかをノイズによって破壊されたパターンで呼び出したいと思う。
このアルゴリズムを実装するコンピュータプログラムを書け。
ノイズを0%、10%、15%にしてパターンを呼び出してみる。

この問題教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問