【手続補正書】
【提出日】令和2年8月31日(2020.8.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｍ（Ｍは２以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸｎ（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸｎに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する畳み込み演算回路であって、
前記重み係数Wを用いた排他的論理和回路と、前記排他的論理和回路の演算結果Ｑｍおよび前記重み係数Wにおける有効ビット値を計数するビット計数回路と、前記ビット計数回路の計数結果に基づいてシフト演算を行うビットシフト回路と、
を備える
ことを特徴とする畳み込み演算回路。
【請求項２】
請求項１に記載の畳み込み演算回路において、
前記Ｎ個の入力データＸｎのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、前記Ｎ個の入力データＸｎのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂｍを生成するビット変換回路をさらに備え、前記排他的論理和回路は前記Ｍ個のビット列Ｂｍのそれぞれについて、当該ビット列Ｂｍと前記重み係数Ｗとの排他的論理和の演算結果Ｑｍを演算する
ことを特徴とする畳み込み演算回路。
【請求項３】
請求項１または２に記載の畳み込み演算回路において、
前記有効ビット値は予め設定された「０」または「１」からなる数であり、前記ビット計数回路は、前記演算結果Ｑｍに含まれる前記有効ビット値の数である第１のビット数ＰＱｍと、前記重み係数Ｗに含まれる前記有効ビット値の数である第２のビット数ＰＷとを計数し、前記第１のビット数ＰＱｍと前記第２のビット数ＰＷとの差分Ｓｍを計算する
ことを特徴とする畳み込み演算回路。
【請求項４】
請求項３に記載の畳み込み演算回路において、
前記ビットシフト回路は、前記排他的論理和回路の演算結果Ｑｍに対して計算された前記差分Ｓｍについて、当該差分Ｓｍを上位ビット側にシフトしたシフト値Ｄｍを計算する
ことを特徴とする畳み込み演算回路。
【請求項５】
請求項４に記載の畳み込み演算回路において、
前記差分Ｓｍに対して計算された複数の前記シフト値Ｄｍを合算し、得られた合算結果を前記畳み込み演算結果Ｙとして出力する合算回路をさらに備える
ことを特徴とする畳み込み演算回路。
【請求項６】
請求項３ないし５のいずれか１項に記載の畳み込み演算回路において、
前記ビット計数回路は、前記演算結果Ｑｍに含まれる、有効ビット値「０」の数を示す前記第１のビット数ＰＱｍを計数する第１のビットカウンタと、前記重み係数Ｗに含まれる、有効ビット値「０」の数を示す前記第２のビット数ＰＷを計数する第２のビットカウンタとを含む
ことを特徴とする畳み込み演算回路。
【請求項７】
請求項６に記載の畳み込み演算回路において、
前記ビット計数回路は、前記第１のビット数ＰＱｍから前記第２のビット数ＰＷを減算することにより前記差分Ｓｍを計算する減算回路をさらに含む
ことを特徴とする畳み込み演算回路。
【請求項８】
請求項３ないし６のいずれか１項に記載の畳み込み演算回路において、
前記排他的論理和回路は、前記重み係数Ｗを用いた否定排他的論理和ＱＩｍを演算し、
前記ビット計数回路は、前記否定排他的論理和ＱＩｍに含まれる、有効ビット値「１」の数を示す第３のビット数ＰＱＩｍを計数する第３のビットカウンタと、前記重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータと、前記反転重み係数ＷＩに含まれる、有効ビット値「１」の数を示す第４のビット数ＰＷＩを計数する第４のビットカウンタとを含む
ことを特徴とする畳み込み演算回路。
【請求項９】
請求項８に記載の畳み込み演算回路において、
前記ビット計数回路は、前記第３のビット数ＰＱＩｍから前記第４のビット数ＰＷＩを減算することにより前記差分Ｓｍを計算する減算回路をさらに含む
ことを特徴とする畳み込み演算回路。
【請求項１０】
請求項１ないし９のいずれか１項に記載の畳み込み演算回路において、
前記重み係数Ｗを記憶する記憶回路をさらに備え、
前記排他的論理和回路は、前記記憶回路から読み出した前記重み係数Ｗに基づいてとの排他的論理和Ｑｍを演算し、
前記ビット計数回路は、当該排他的論理和Ｑｍに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱｍと、前記記憶回路から読み出した前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓｍを計数する
ことを特徴とする畳み込み演算回路。
【請求項１１】
Ｍ（Ｍは２以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸｎ（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸｎに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する演算処理装置で用いられる畳み込み演算方法であって、前記重み係数Wを用いた排他的論理和演算ステップと、前記排他的論理和演算ステップの演算結果Ｑｍおよび前記重み係数Wにおける有効ビット値を計数するビット計数ステップと、前記ビット計数ステップの計数結果に基づいてシフト演算を行うビットシフトステップと、を備える
ことを特徴とする畳み込み演算方法。
【請求項１２】
請求項１１に記載の畳み込み演算方法を実行するためのプログラム。
【請求項１３】
入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、
前記演算処理部は、請求項１ないし１０のいずれか１項に記載の畳み込み演算回路を含む
ことを特徴とする畳み込みニューラルネットワーク装置。
【請求項１４】
前記演算処理部は、FPGAまたはPLDが用いられる
ことを特徴とする請求項１３に記載の畳み込みニューラルネットワーク装置。
【請求項１５】
前記演算処理部は、マイクロプロセッサが用いられる
ことを特徴とする請求項１３に記載の畳み込みニューラルネットワーク装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正の内容】
【発明の名称】畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
上述した課題を解決するために、本発明に係る畳み込み演算回路は、Ｍ（Ｍは２以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸｎ（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸｎに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する畳み込み演算回路であって、前記重み係数Wを用いた排他的論理和回路と、前記排他的論理和回路の演算結果Ｑｍおよび前記重み係数Wにおける有効ビット値を計数するビット計数回路と、前記ビット計数回路の計数結果に基づいてシフト演算を行うビットシフト回路と、を備える。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、前記Ｎ個の入力データＸｎのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、前記Ｎ個の入力データＸｎのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂｍを生成するビット変換回路をさらに備え、前記排他的論理和回路は前記Ｍ個のビット列Ｂｍのそれぞれについて、当該ビット列Ｂｍと前記重み係数Ｗとの排他的論理和の演算結果Ｑｍを演算してもよい。また、前記有効ビット値は予め設定された「０」または「１」からなる数であり、前記ビット計数回路は、前記演算結果Ｑｍに含まれる前記有効ビット値の数である第１のビット数ＰＱｍと、前記重み係数Ｗに含まれる前記有効ビット値の数である第２のビット数ＰＷとを計数し、前記第１のビット数ＰＱｍと前記第２のビット数ＰＷとの差分Ｓｍを計算してもよい。また、前記ビットシフト回路は、前記排他的論理和回路の演算結果Ｑｍに対して計算された前記差分Ｓｍについて、当該差分Ｓｍを上位ビット側にシフトしたシフト値Ｄｍを計算してもよい。また、前記差分Ｓｍに対して計算された複数の前記シフト値Ｄｍを合算し、得られた合算結果を前記畳み込み演算結果Ｙとして出力する合算回路をさらに備えてもよい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
また、前記ビット計数回路は、前記演算結果Ｑｍに含まれる、有効ビット値「０」の数を示す前記第１のビット数ＰＱｍを計数する第１のビットカウンタと、前記重み係数Ｗに含まれる、有効ビット値「０」の数を示す前記第２のビット数ＰＷを計数する第２のビットカウンタとを含んでもよい。また、前記ビット計数回路は、前記第１のビット数ＰＱｍから前記第２のビット数ＰＷを減算することにより前記差分Ｓｍを計算する減算回路をさらに含んでもよい。また、前記排他的論理和回路は、前記重み係数Ｗを用いた否定排他的論理和ＱＩｍを演算し、前記ビット計数回路は、前記否定排他的論理和ＱＩｍに含まれる、有効ビット値「１」の数を示す第３のビット数ＰＱＩｍを計数する第３のビットカウンタと、前記重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータと、前記反転重み係数ＷＩに含まれる、有効ビット値「１」の数を示す第４のビット数ＰＷＩを計数する第４のビットカウンタとを含んでもよい。また、前記ビット計数回路は、前記第３のビット数ＰＱＩｍから前記第４のビット数ＰＷＩを減算することにより前記差分Ｓｍを計算する減算回路をさらに含んでもよい。また、前記重み係数Ｗを記憶する記憶回路をさらに備え、前記排他的論理和回路は、前記記憶回路から読み出した前記重み係数Ｗに基づいてとの排他的論理和Ｑｍを演算し、前記ビット計数回路は、当該排他的論理和Ｑｍに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱｍと、前記記憶回路から読み出した前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓｍを計数してもよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
上述した課題を解決するために、本発明に係る畳み込み演算方法は、Ｍ（Ｍは２以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸｎ（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸｎに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する演算処理装置で用いられる畳み込み演算方法であって、前記重み係数Wを用いた排他的論理和演算ステップと、前記排他的論理和演算ステップの演算結果Ｑｍおよび前記重み係数Wにおける有効ビット値を計数するビット計数ステップと、前記ビット計数ステップの計数結果に基づいてシフト演算を行うビットシフトステップと、を備える。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
上述した課題を解決するために、本発明に係るプログラムは、上記の畳み込み演算方法を実行するためのプログラムである。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
上述した課題を解決するために、本発明に係る畳み込みニューラルネットワーク装置は、入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、前記演算処理部は、請求項１ないし１０のいずれか１項に記載の畳み込み演算回路を含む。また、前記演算処理部は、FPGAまたはPLDが用いられてもよい。また、前記演算処理部は、マイクロプロセッサが用いられてもよい。