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

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

ただいまの
回答率

90.52%

  • Python 3.x

    9365questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python3 ValueError(cannot reshape array of size 451584 into shape (128,1176))の解決方法

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 49

SuzuAya

score 6

前提・実現したいこと

コードを実行中に発生したエラーについて、どのようにコードを修正すればエラーが改善されるか教えて頂きたいです。
npのreshapeがうまくいっていないようでしたので、他の質問も参考に以下の通り修正したのですがうまくいきませんでした。
また、他にもおかしな点があれば併せてご指摘いただけますと幸いです。

発生している問題・エラーメッセージ

ValueError: cannot reshape array of size 451584 into shape (128,1176)

該当のソースコード

import numpy as np
import os
from PIL import Image
import glob
import re
from arrange_augmentator import Augmentation #自作モジュール
from arrange_data_resize import Data #自作モジュール

FROM_DIR = "./folder_a/train/output"

def numericalSort(value):
numbers = re.compile(r'(\d+)')
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts

class Make_train():
def image_list(self):
test = np.empty((0, 128, 1176, 1), int)
for infile in sorted(glob.glob(os.path.join(FROM_DIR, "*.png")),key=numericalSort):
im = Image.open(infile)
gray_im = im.convert('L')
gray_array = np.array(gray_im)
im_reshape = np.reshape(gray_array, (1,128,1176,1))
test = np.concatenate([test,im_reshape])
if len(test)==2:
break

return test

if name == 'main':
_, x_test = Augmentation().run()
print("run augmentor.py")
x_train = Make_train().image_list()
np.save('./x_train_augmentor.npy',x_train)
np.save('./ae_x_test.npy',x_test)

試したこと

エラー元を見ると、上記のコード内の自作モジュールAugmentator.pyの方のreshapeがうまくいっていないようだったので、以下の通り修正しました。
(修正前はimage = np.reshape(image, (128,1176))としていました)
import numpy as np
from PIL import Image
import Augmentor
from arrange_data_resize import Tomography

class Augmentation():

def run(self):     
x_train, x_test = Data().make()
image_size = x_train.shape[1]
img_rows,img_cols = 128,1176
for i in range(len(x_train)):
image = x_train[i:i+1,:,:]
image = np.reshape(image, (1,128,1176,1))
pilImg = Image.fromarray(np.uint8(image))
if i==2:
break
pilImg.save('./folder_a/train/data_%d.png' %i)

images_dir = "./folder_a"
output_dir = './folder_a/train'
os.makedirs(output_dir, exist_ok=True)
p = Augmentor.Pipeline(images_dir)
p.rotate(probability=0.7, max_left_rotation=5, max_right_rotation=5)
p.sample(1400)    
return x_train,x_test

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

同じタグがついた質問を見る

  • Python 3.x

    9365questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。