3-1長さ時記憶神経ネットワーク(LSTM)--シンプルコード実現
1256 ワード
フルコードをクリックしてください.http://www.daimapi.com/neuralnetwork3_1/
LSTM(Long Shot-Tarm Memory)は、時間的に再帰的な神経ネットワークであり、時間系列での間隔と遅延が比較的長い重要なイベントの処理と予測に適している.LSTMは既に科学技術の分野で多くの応用がなされている.LSTMベースのシステムは、翻訳言語、ロボットの制御、画像分析、ドキュメントの要約、音声認識画像の識別、手書きでの認識、チャットロボットの制御、病気の予測、クリック率と株式、合成音楽などのタスクを学ぶことができます.
コードは任意のサードパーティの深さ学習キットを使用せずに実装され、Pythoon 3を利用して実装されます.
LSTM(Long Shot-Tarm Memory)は、時間的に再帰的な神経ネットワークであり、時間系列での間隔と遅延が比較的長い重要なイベントの処理と予測に適している.LSTMは既に科学技術の分野で多くの応用がなされている.LSTMベースのシステムは、翻訳言語、ロボットの制御、画像分析、ドキュメントの要約、音声認識画像の識別、手書きでの認識、チャットロボットの制御、病気の予測、クリック率と株式、合成音楽などのタスクを学ぶことができます.
コードは任意のサードパーティの深さ学習キットを使用せずに実装され、Pythoon 3を利用して実装されます.
# -*- coding: utf-8 -*-
import copy, numpy as np
np.random.seed(0)
# sigmoid
def sigmoid(x):
output = 1/(1+np.exp(-x))
return output
# sigmoid
def sigmoid_output_to_derivative(output):
return output*(1-output)
#
int2binary = {}
binary_dim = 8
largest_number = pow(2,binary_dim)
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint8).T,axis=1)
for i in range(largest_number):
int2binary[i] = binary[i]
# LSTM
alpha = 0.1
input_dim = 2
hidden_dim = 16
output_dim = 1
#
synapse_0 = 2*np.random.random((input_dim,hidden_dim)) - 1
synapse_1 = 2*np.random.random((hidden_dim,output_dim)) - 1
synapse_h = 2*np.random.random((hidden_dim,hidden_dim)) - 1
synapse_0_update = np.zeros_like(synapse_0)
synapse_1_update = np.zeros_like(synapse_1)
synapse_h_update = np.zeros_like(synapse_h)
#
for j in range(10000):