テスター
カテゴリー: ニュース
ニュース
TIN Polygon
フラクタル次元と認識
電子回路を作る時は何かと発振器が必要になります。
様々な信号発生器がありますが可聴範囲内であればパソコンでできそうです。
パソコンなら細かな波形をデザインできるのでかえって専用機のジェネレーターよりも良いかも。
例えばWindows PCで以下のようなコードを実行します。
#include <iostream> #include <string> #include <windows.h> #include <MMSystem.h> #include <math.h> #pragma comment (lib, "winmm.lib") int main() { WAVEFORMATEX wfe; static HWAVEOUT hWaveOut; static WAVEHDR whdr; static LPBYTE lpWave; int i, len, start, end; int terms = 1; int sampling = 44100; int frequency = 441; wfe.wFormatTag = WAVE_FORMAT_PCM; wfe.nChannels = 2; wfe.wBitsPerSample = 8; wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8; wfe.nSamplesPerSec = sampling; wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * wfe.nBlockAlign; waveOutOpen(&hWaveOut, WAVE_MAPPER, &wfe, 0, 0, CALLBACK_NULL); lpWave = (LPBYTE)calloc(wfe.nAvgBytesPerSec, terms * wfe.nChannels); // 立ち上がりは出力を0にする for (i = 0; i < sampling * terms * wfe.nChannels; i++) { lpWave[i] = 128; } len = sampling / frequency; // 最初の10サイクルは出力しない start = sampling / frequency * 10; // 8サイクル波形を出力する end = start + sampling / frequency * 8 * wfe.nChannels; double d = 360.0 / len; double pi = 3.14159265359; for (i = start; i < end; i++) { if ((i % 2) == 0) { // 方形波 Left if ((i/2) % len < len / 2) { lpWave[i] = 228; } else { lpWave[i] = 28; } } else { // 正弦波 Right lpWave[i] = (BYTE)(100.0 * sin(d * ((i / 2) % len) / 180.0 * pi) + 127.5); } } whdr.lpData = (LPSTR)lpWave; whdr.dwBufferLength = wfe.nAvgBytesPerSec * terms; whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP; whdr.dwLoops = 1; waveOutPrepareHeader(hWaveOut, &whdr, sizeof(WAVEHDR)); waveOutWrite(hWaveOut, &whdr, sizeof(WAVEHDR)); char str[128]; std::cout << "hello, world\n"; std::cin >> str; }
パソコンのライン出力をそのままマイク入力に接続しAudacityで表示すると、
のようになります。
左チャンネルは、方形波、右チャンネルは正弦波の出力ができました。2CHファンクションジェネレータの完成です。
確率的ニューラルネットワーク
PNN : Probabilistic Neural Network
殆どのアルゴリズムは逐次処理ですがPNNは完全な並列処理アルゴリズムです。(20191031)
ChatGPTにこれは何か聞いてみた。
User
確率的ニューラルネットワークとは何ですか。
ChatGPT
確率的ニューラルネットワークは、ニューラルネットワークの一種で、確率的な要素を含んでいるものを指します。つまり、入力から出力へのマッピングを決定する際に、確率的な処理を行い、確率的な出力を生成することができます。
確率的ニューラルネットワークは、一般にディープラーニングや深層学習の分野で使用され、特に認識や分類、画像処理、自然言語処理などのタスクに適しています。確率的ニューラルネットワークは、確率的な勾配降下法(SGD)やモンテカルロ法などのアルゴリズムを使用して、最適なパラメーターを学習することができます。
確率的ニューラルネットワークには、多層パーセプトロン(MLP)、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)などがあります。例えば、CNNは画像処理タスクに適しており、RNNは自然言語処理に適しています。
確率的ニューラルネットワークの利点は、過学習を抑制し、一般化能力を向上させることができることです。また、入力にノイズが含まれている場合でも、確率的な出力を生成することで、ノイズの影響を減らすことができます。ただし、学習に時間がかかる場合があるため、より高速なアルゴリズムが必要な場合があります。