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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

Keiti
Keiti

総合スコア5

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

1クリップ

4246閲覧

投稿2020/08/25 08:53

編集2020/08/27 06:27

以前まで以下のコードを用いて顔認証を実行できていたのですが、突然エラーが発生し使えなくなりました。
コード自体は編集していないのになぜなのでしょうか?

(追記)
今まではFaceEditedというフォルダに顔の写真を入れていたのですが、今回は眼だけを切り抜いて入れています。どうやらそれが原因のようです。調べてみると画像をnumpy配列に変換した後、そのnumpy配列をtensorへと変換することが出来ていないようです。tf.convert_to_tensorというコードを使えば変換できるということはわかるのですが、どのようにコードをかけばよいのでしょうか。ご教示ください。

from google.colab import drive drive.mount('/content/drive') from __future__ import print_function from keras.utils.np_utils import to_categorical from keras.layers import Activation, Conv2D, Dense, Flatten, MaxPooling2D from keras.models import Sequential import numpy as np import shutil import random import cv2 import glob import os import matplotlib.pyplot as plt '''顔認識したい人の名前を定義する''' # 顔認識する対象を決定(検索ワードを入力) SearchName = ["A","B","C","D"] # 画像の取得枚数の上限 ImgNumber =100 # CNNで学習するときの画像のサイズを設定(サイズが大きいと学習に時間がかかる) ImgSize=(128,128) input_shape=(128,128,3) for name in SearchName: in_dir = '/content/drive/My Drive/FaceEdited/'+name in_jpg=os.listdir(in_dir) #img_file_name_listをシャッフル、そのうち2割をtest_imageディテクトリに入れる random.shuffle(in_jpg) os.makedirs('/content/drive/My Drive/test/' + name, exist_ok=True) for t in range(len(in_jpg)//5): shutil.move("/content/drive/My Drive/FaceEdited/"+name+"/"+str(in_jpg[t]), "/content/drive/My Drive/test/"+name) X_train = [] Y_train = [] for i in range(len(SearchName)): img_file_name_list=os.listdir('/content/drive/My Drive/FaceEdited/'+SearchName[i]) print(img_file_name_list) print("{}:トレーニング用の写真の数は{}枚です。".format(SearchName[i],len(img_file_name_list))) for j in range(0,len(img_file_name_list)-1): n=os.path.join('/content/drive/My Drive/FaceEdited/'+SearchName[i]+"/",img_file_name_list[j]) img = cv2.imread(n) if img is None: print('image' + str(j) + ':NoImage') continue else: r,g,b = cv2.split(img) img = cv2.merge([r,g,b]) X_train.append(img) Y_train.append(i) print("") # テストデータのラベル付け X_test = [] # 画像データ読み込み Y_test = [] # ラベル(名前) for i in range(len(SearchName)): img_file_name_list=os.listdir("/content/drive/My Drive/test/"+SearchName[i]) print("{}:テスト用の写真の数は{}枚です。".format(SearchName[i],len(img_file_name_list))) for j in range(0,len(img_file_name_list)-1): n=os.path.join("/content/drive/My Drive/test/"+SearchName[i]+"/",img_file_name_list[j]) img = cv2.imread(n) if img is None: print('image' + str(j) + ':NoImage') continue else: r,g,b = cv2.split(img) img = cv2.merge([r,g,b]) X_test.append(img) Y_test.append(i) X_train=np.array(X_train) X_test=np.array(X_test) y_train = to_categorical(Y_train) y_test = to_categorical(Y_test) model = Sequential() model.add(Conv2D(input_shape=input_shape, filters=32,kernel_size=(3, 3), strides=(1, 1), padding="same")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), padding="same")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), padding="same")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(256)) model.add(Activation("sigmoid")) model.add(Dense(128)) model.add(Activation('sigmoid')) # 分類したい人数を入れる model.add(Dense(len(SearchName))) model.add(Activation('softmax')) # コンパイル model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit(X_train, y_train, batch_size=70, epochs=50, verbose=1, validation_data=(X_test, y_test)) # 汎化制度の評価・表示 score = model.evaluate(X_test, y_test, batch_size=32, verbose=0) print('validation loss:{0[0]}\nvalidation accuracy:{0[1]}'.format(score)) #acc, val_accのプロット} plt.plot(history.history["accuracy"], label="accuracy", ls="-", marker="o") plt.plot(history.history["val_accuracy"], label="val_accuracy", ls="-", marker="x") plt.ylabel("accuracy") plt.xlabel("epoch") plt.legend(loc="best") plt.show() #モデルを保存 model.save("MyModel.h5")

実行結果が以下になります。

Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True). ['(12).jpg', '(1).jpg', '(0).jpg', '(15).jpg', '(14).jpg', '(13).jpg', '(8).jpg', '(6).jpg'] A:トレーニング用の写真の数は8枚です。 ['(18).jpg', '(13).jpg', '(12).jpg', '(1).jpg', '(0).jpg', '(7).jpg', '(23).jpg', '(22).jpg'] B:トレーニング用の写真の数は8枚です。 ['(15).jpg', '(11).jpg', '(10).jpg', '(1).jpg', '(3).jpg', '(19).jpg', '(18).jpg', '(17).jpg'] C:トレーニング用の写真の数は8枚です。 ['(23).jpg', '(21).jpg', '(18).jpg', '(17).jpg', '(16).jpg', '(8).jpg', '(4).jpg', '(3).jpg'] D:トレーニング用の写真の数は8枚です。 A:テスト用の写真の数は16枚です。 B:テスト用の写真の数は16枚です。 C:テスト用の写真の数は16枚です。 D:テスト用の写真の数は16枚です。 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-2-12f67ddaedf6> in <module>() 106 107 history = model.fit(X_train, y_train, batch_size=70, --> 108 epochs=50, verbose=1, validation_data=(X_test, y_test)) 109 110 13 frames /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype) 96 dtype = dtypes.as_dtype(dtype).as_datatype_enum 97 ctx.ensure_initialized() ---> 98 return ops.EagerTensor(value, ctx.device_name, dtype) 99 100 ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。