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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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

解決済

ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=5, found

proad
proad

総合スコア1

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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

1回答

0評価

0クリップ

187閲覧

投稿2022/05/16 16:16

前提・実現したいこと

cnnを使用して加速度から行動を分類するプログラムを作成しています.
解決しようといろいろ調べてみましたがわかりません.
どなたかわかる方がいましたらご教授お願いします.

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

ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=5, found ndim=2. Full shape received: (None, 28)

該当のソースコード

python

from tabnanny import verbose import numpy as np from numpy.fft import fftn import pandas as pd import collections from sklearn.model_selection import train_test_split import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Activation, Conv3D,LeakyReLU,Flatten, Dropout from tensorflow.keras.utils import to_categorical from keras.utils import np_utils from tensorflow.keras.optimizers import Adam #csvファイルの読み込み df = pd.read_csv('./data.csv',header = 0,dtype={'time':'float','accx':'float','accy':'float','accz':'float','label':'float'},encoding="UTF-8") #使わない列を削除 df = df.drop(df.loc[:,['rotax', 'rotay', 'rotaz']],axis = 1) print(df.head()) df['accc'] = np.sqrt(df['accx']**2 + df['accy']**2 + df['accz']**2) print(df.head()) labels = df['label'].unique() headers = ['accx','accy','accz','accc'] fft_batch_size = 32 def get_best_size(v,fft_batch_size): still = True for best_size in reversed(range(0,v.size)): if best_size % fft_batch_size == 0: return best_size data = [] target = [] for label in labels: v = np.array(df[df['label']==label][headers].values) v = v[0:get_best_size(v.T[0],fft_batch_size)] features = [] for i , header in enumerate(headers): sensor_data = v.T[i].reshape((int( v.T[i].size/fft_batch_size),fft_batch_size)) features.append(sensor_data.mean(axis = 1).tolist()) features.append(sensor_data.max(axis = 1).tolist()) features.append(sensor_data.min(axis = 1).tolist()) features.append(sensor_data.std(axis = 1).tolist()) features.append(sensor_data.var(axis = 1).tolist()) F = np.fft.fft(sensor_data) F_abs = np.abs(F) / fft_batch_size * 2. F_abs.T[0] = F_abs.T[0] / 2. F_data = (F_abs.T[:int(sensor_data[0].size/2)+1]).T features.append(F_data.argmax(axis=1).tolist()) features.append(F_data.max(axis=1).tolist()) if i == 0: for lll in list(range(0, sensor_data.max(axis=1).size) ): target.append(label) data.extend(np.array(features).T.tolist()) data = np.array(data) target = np.array(target) target = np_utils.to_categorical(target) x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.3,random_state=3) num_classes = 4 #出力層 #モデル model = Sequential() model.add(Conv3D(32, kernel_size=(5, 5, 5),input_shape=(64, 64, 64, 1), data_format='channels_last')) model.add(LeakyReLU(0.2)) for _ in range(2): model.add(Conv3D(32, kernel_size=(5, 5, 5), data_format='channels_last')) model.add(LeakyReLU(0.2)) model.add(Flatten()) model.add(Dense(256)) model.add(LeakyReLU(0.2)) model.add(Dropout(0.5)) model.add(Dense(num_classes)) model.add(Activation('softmax')) model.summary() # モデルのコンパイル model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy']) # モデルの学習 history = model.fit(x_train, y_train, batch_size=32, epochs=50, validation_data=(x_test, y_test), verbose=1) train_score = model.evaluate(x_train,y_train) test_score = model.evaluate(x_test,y_test) print('Train loss',train_score[0]) print('Train accuracy',train_score[1]) print('Test loss:', test_score[0]) print('Test accuracy:', test_score[1])

データの中身(一部)

x,y_train42個,42個とx,y_test18個,18個のデータです.

x_train [[ 5.04390949e-01 2.82111752e+00 -5.90021090e-01 ... 2.59547117e-01 0.00000000e+00 9.78655016e+00] [ 9.53502453e-03 1.34599070e+00 -1.89471101e+00 ... 9.78987226e-01 0.00000000e+00 9.73595706e+00] [ 1.37212890e-01 1.20518105e+00 -9.83268767e-01 ... 3.93301413e-01 0.00000000e+00 9.78349855e+00] ... [ 3.73374090e-01 1.31965421e+00 -1.34150079e+00 ... 9.23270503e-01 0.00000000e+00 9.89672438e+00] [ 9.91152646e-01 1.51178849e+00 2.04255183e-01 ... 1.78536129e-01 0.00000000e+00 1.01428930e+01] [ 9.12770779e-01 1.96324551e+00 -6.52419220e-02 ... 5.50420941e-01 0.00000000e+00 9.84790721e+00]] y_test [[0. 0. 0. 0. 1.] [0. 0. 1. 0. 0.] [0. 0. 0. 0. 1.] [0. 1. 0. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 1. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 1. 0.] [0. 1. 0. 0. 0.] [0. 0. 0. 1. 0.] [0. 1. 0. 0. 0.] [0. 0. 0. 0. 1.] [0. 0. 0. 0. 1.]]

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

jbpb0

2022/05/16 22:20

x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.3,random_state=3) のすぐ下に print(x_train.shape) を追加して実行したら、何て表示されますでしょうか?
proad

2022/05/17 00:44

print(x_train.shape)を実行したところ (42, 28)と出力されました.
jbpb0

2022/05/17 02:38 編集

> print(x_train.shape)を実行したところ (42, 28)と出力されました. その「42」と「28」は、それぞれデータの何に付いての数値でしょうか? 一つのサンプルに28の数値(特徴量)があって、それが42サンプルある、ということでしょうか? 【追記】 > x,y_train42個,42個とx,y_test18個,18個のデータです. と書かれてるのを見落としてました 「42」がサンプル数だとすると、一つのサンプルは28個の数値からなる1次元のデータでしょうか? もしそうなら、「Conv3D」は3次元入力が必要なので、1次元入力には使えません https://keras.io/ja/layers/convolutional/ の「Conv3D」を見てください
jbpb0

2022/05/17 02:48 編集

> Input 0 of layer sequential is incompatible with the layer の原因は、 > print(x_train.shape)を実行したところ (42, 28)と出力されました. と、 model.add(Conv3D(32, kernel_size=(5, 5, 5),input_shape=(64, 64, 64, 1), data_format='channels_last')) の「input_shape=(64, 64, 64, 1)」が矛盾してるからです https://rightcode.co.jp/blog/information-technology/neural-network-learning-visualization#i-3 の「使用するデータセット」の「データセットのロード」を見ると、「x_train.shape」は「(60000, 28, 28, 1)」ですよね https://rightcode.co.jp/blog/information-technology/neural-network-learning-visualization#MNIST の「MNISTを画像分類するモデルを構築する」を見ると、「input_shape=(28, 28, 1)」ですよね 上記のように、「input_shape」は「x_train.shape」から先頭の数値(上記例では「60000」)のみ無いものと一致しないといけません なお、「x_train.shape」の先頭の数値(上記例では「60000」)は、学習データのサンプル数です 上記Webページの例では、「x_train」には画像が60000枚入ってます > x,y_train42個,42個とx,y_test18個,18個のデータです. ならば、質問者さんの場合は、その数値はたぶん「42」
proad

2022/05/17 02:58

1つのサンプルは28個からなる1次元データです. Conv3Dが使えないということなのでConv1でモデルを作成してみます. コメントを下さりありがとうございます.

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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