ラップアラウンドを使用して、ndarray上にスライディングウィンドウを作成するにはどうすればよいですか?

rocksNwaves

ラップアラウンドを使用して、1ステップ右にシフトした配列を返すロジックを作成しようとしています。ラップアラウンドを実装するためにIndexErrorを受け取ることに依存していましたが、エラーはスローされません!

def get_batches(arr, batch_size, seq_length):
    """
    Return arr data as batches of shape (batch_size, seq_length)
    """
    
    n_chars = batch_size * seq_length
    n_batches = int(np.floor(len(arr)/ n_chars))
    n_keep = n_chars * n_batches
    
    arr = arr[:n_keep].reshape(batch_size, -1)
    
    for b in range(n_batches):
        start = b * seq_length
        stop = start + seq_length
        
        x = arr[:, start:stop]
        try: 
            y = arr[:, start + 1: stop + 1]
        except IndexError:
            y = np.concatenate(x[:, 1:], arr[:, 0], axis=1)
        
        yield x, y

したがって、このコードy、最後の配列が生成される場合を除いて、うまく機能します...(2,2)期待される代わりに配列を取得し(2,3)ます。これは、IndexErrorがスローされないためです。

test = np.arange(12)
batches = get_batches(test, 2, 3)

for x, y in batches:
    print('x=', x)
    print('y=', y, '\n')

収量

x=
 [[0 1 2]
 [6 7 8]]
y=           # as expected
 [[1 2 3]
 [7 8 9]] 

x=
 [[ 3  4  5]
 [ 9 10 11]]
y=           # truncated :(
 [[ 4  5]
 [10 11]] 

誰かがこれを行う方法について別の提案がありますか?できれば、失敗したソリューションと同じくらい単純なものですか?

エサン

これを試して:

from skimage.util.shape import view_as_windows
def get_batches2(arr, batch_size, seq_length):
    """
    Return arr data as batches of shape (batch_size, seq_length)
    """
    n_chars = batch_size * seq_length
    n_batches = int(np.floor(len(arr)/ n_chars))
    n_keep = n_chars * n_batches
    
    arr = arr[:n_keep].reshape(batch_size, -1)
    x = view_as_windows(arr, (batch_size, seq_length), seq_length)[0]
    y = view_as_windows(np.roll(arr,-1,axis=1), (batch_size, seq_length), seq_length)[0]

    return x, y

view_as_windows同じ共有メモリを使用します(これはビューです。同じメモリを共有しているかどうかを確認できます)。したがって、ループを使用して生成するか、返すかは問題ではありません。それが問題である場合(特にウィンドウが重なっていない場合)、余分なメモリを使用することはなく、ジェネレータよりもはるかに高速である必要があります。おそらく、これを簡単に再形成することで実現することもできview_as_windowsます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Scalaを使用してSparkでスライディングウィンドウランクを設定するにはどうすればよいですか?

分類Dev

時間ベースのスライディングウィンドウを使用して行数を計算するにはどうすればよいですか?

分類Dev

ExtJsを使用してアラートウィンドウからグリッド上の行を更新するにはどうすればよいですか?

分類Dev

バッチを使用してフォアグラウンドウィンドウを取得するにはどうすればよいですか?

分類Dev

コマンドラインでウィンドウの場所(デスクトップ上)を見つけるにはどうすればよいですか?

分類Dev

コマンドラインでウィンドウの場所(デスクトップ上)を見つけるにはどうすればよいですか?

分類Dev

ポップアップブラウザウィンドウを前面に表示して、すべてのブラウザウィンドウの上に表示するにはどうすればよいですか?

分類Dev

Pythonでgtkウィンドウを作成し、バックグラウンドでコードを実行するにはどうすればよいですか?

分類Dev

セキュリティグループを使用してAWSEC2インスタンスからのすべてのアウトバウンドトラフィックを拒否するにはどうすればよいですか?

分類Dev

ウィンドウオーバーレイと複数のドロップゾーンを使用してファイルのドラッグアンドドロップを処理するにはどうすればよいですか?

分類Dev

グリッドを使用して画像をブラウザウィンドウに合わせるにはどうすればよいですか?

分類Dev

CPPプログラムを使用してウィンドウにテキストを挿入するにはどうすればよいですか?

分類Dev

WPFウィンドウとシステムトレイアイコンを使用してコマンドライン/ Windowsサービスアプリケーションを作成するにはどうすればよいですか?

分類Dev

スライディング/ラギングウィンドウを実装するにはどうすればよいですか?

分類Dev

「matplotlib.pyplot」を使用してさまざまなウィンドウでグラフをプロットするにはどうすればよいですか?

分類Dev

X11libを使用してプログラムでウィンドウのサイズを変更するにはどうすればよいですか?

分類Dev

Pythonとpywinautoを使用してバックグラウンドウィンドウをフォアグラウンドに表示せずに、そのウィンドウにキーストロークを送信するにはどうすればよいですか?

分類Dev

Flink CEPを使用してバッチウィンドウまたはスライドウィンドウを作成するにはどうすればよいですか?

分類Dev

入力からドロップダウンリストを作成し、別のシートの列にドロップダウンを入力するプログラムをコーディングするにはどうすればよいですか?

分類Dev

ファブリックを使用してディスクドライブをマウントするにはどうすればよいですか

分類Dev

スライディングウィンドウでPyTorchテンソルのサイズを変更するにはどうすればよいですか?

分類Dev

ウィジェットクラスフレームを呼び出してメインウィンドウアプリケーションクラスにパックするにはどうすればよいですか?tkinter

分類Dev

Mac OSでモーダルスライドアウトウィンドウを作成するにはどうすればよいですか?

分類Dev

ブラウザウィンドウの背景とデスクトップの背景をブレンドするにはどうすればよいですか?

分類Dev

wmctrlを使用して特定のクラスのウィンドウをアクティブ化するにはどうすればよいですか?

分類Dev

リストのリストから要素のスライディングウィンドウを選択するにはどうすればよいですか?

分類Dev

Qtでプログラムによってメインウィンドウにボタンを追加し、cssファイルを使用してボタンのスタイルを変更するにはどうすればよいですか?

分類Dev

あるEmacsウィンドウから別のウィンドウにテキストをドラッグアンドドロップするにはどうすればよいですか?

分類Dev

コンソールウィンドウを表示しないプログラムを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    Scalaを使用してSparkでスライディングウィンドウランクを設定するにはどうすればよいですか?

  2. 2

    時間ベースのスライディングウィンドウを使用して行数を計算するにはどうすればよいですか?

  3. 3

    ExtJsを使用してアラートウィンドウからグリッド上の行を更新するにはどうすればよいですか?

  4. 4

    バッチを使用してフォアグラウンドウィンドウを取得するにはどうすればよいですか?

  5. 5

    コマンドラインでウィンドウの場所(デスクトップ上)を見つけるにはどうすればよいですか?

  6. 6

    コマンドラインでウィンドウの場所(デスクトップ上)を見つけるにはどうすればよいですか?

  7. 7

    ポップアップブラウザウィンドウを前面に表示して、すべてのブラウザウィンドウの上に表示するにはどうすればよいですか?

  8. 8

    Pythonでgtkウィンドウを作成し、バックグラウンドでコードを実行するにはどうすればよいですか?

  9. 9

    セキュリティグループを使用してAWSEC2インスタンスからのすべてのアウトバウンドトラフィックを拒否するにはどうすればよいですか?

  10. 10

    ウィンドウオーバーレイと複数のドロップゾーンを使用してファイルのドラッグアンドドロップを処理するにはどうすればよいですか?

  11. 11

    グリッドを使用して画像をブラウザウィンドウに合わせるにはどうすればよいですか?

  12. 12

    CPPプログラムを使用してウィンドウにテキストを挿入するにはどうすればよいですか?

  13. 13

    WPFウィンドウとシステムトレイアイコンを使用してコマンドライン/ Windowsサービスアプリケーションを作成するにはどうすればよいですか?

  14. 14

    スライディング/ラギングウィンドウを実装するにはどうすればよいですか?

  15. 15

    「matplotlib.pyplot」を使用してさまざまなウィンドウでグラフをプロットするにはどうすればよいですか?

  16. 16

    X11libを使用してプログラムでウィンドウのサイズを変更するにはどうすればよいですか?

  17. 17

    Pythonとpywinautoを使用してバックグラウンドウィンドウをフォアグラウンドに表示せずに、そのウィンドウにキーストロークを送信するにはどうすればよいですか?

  18. 18

    Flink CEPを使用してバッチウィンドウまたはスライドウィンドウを作成するにはどうすればよいですか?

  19. 19

    入力からドロップダウンリストを作成し、別のシートの列にドロップダウンを入力するプログラムをコーディングするにはどうすればよいですか?

  20. 20

    ファブリックを使用してディスクドライブをマウントするにはどうすればよいですか

  21. 21

    スライディングウィンドウでPyTorchテンソルのサイズを変更するにはどうすればよいですか?

  22. 22

    ウィジェットクラスフレームを呼び出してメインウィンドウアプリケーションクラスにパックするにはどうすればよいですか?tkinter

  23. 23

    Mac OSでモーダルスライドアウトウィンドウを作成するにはどうすればよいですか?

  24. 24

    ブラウザウィンドウの背景とデスクトップの背景をブレンドするにはどうすればよいですか?

  25. 25

    wmctrlを使用して特定のクラスのウィンドウをアクティブ化するにはどうすればよいですか?

  26. 26

    リストのリストから要素のスライディングウィンドウを選択するにはどうすればよいですか?

  27. 27

    Qtでプログラムによってメインウィンドウにボタンを追加し、cssファイルを使用してボタンのスタイルを変更するにはどうすればよいですか?

  28. 28

    あるEmacsウィンドウから別のウィンドウにテキストをドラッグアンドドロップするにはどうすればよいですか?

  29. 29

    コンソールウィンドウを表示しないプログラムを作成するにはどうすればよいですか?

ホットタグ

アーカイブ