KERAS에서 내 NN 모델을 교육하는 것으로 끝났습니다. 여기 내 상황이 있습니다.Keras ValueError : 모델 타겟을 점검 할 때 오류가 발생했습니다. 예상 dense_18
나는 폴더가 있는데, 거기에 30 개의 CSV 파일이 있습니다. 모두 다른 이름입니다.
이제 분류를하고 있습니다.
- 각 CSV 파일 (아래에 표시된 어레이 dfs에서 읽은 후 5000,3은 단일 교육 인스턴스 자체이므로 30 개의 CSV에 대해 30 개의 교육 인스턴스가 있음).
- 파일 이름은 분류하려는 레이블입니다. 논문은 고유 한 3 가지 레이블로 하나의 핫 인코딩을 사용합니다.
- 나는 입력 모양과 훈련 데이터 dfs를 올바른 모양으로 재구성하는 방법에 혼란 스럽다.
참고 : 30 개의 관측치는 5000, 3 dim 및 filename의 CSV 파일 자체입니다.
여기 내 코드와 오류가 있습니다.
import os
import glob
import pandas as pd
import numpy as np
from keras.preprocessing.text import one_hot
from keras.models import Sequential
from keras.layers import Dense
path = os.getcwd()
file_list = glob.glob(path + '/*.csv')
dfs=np.array([pd.read_csv(fp).values for fp in file_list])
dfs.shape
# (30, 5000, 3)
from sklearn.preprocessing import OneHotEncoder
# define class labels
labels = np.array([1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3])
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = labels.reshape(len(labels), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
len(onehot_encoded)
print(onehot_encoded)
# 30
array([[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.],
[ 0., 0., 1.]])
model = Sequential()
model.add(Dense(24, input_shape=(5000,3), activation='relu'))
model.add(Dense(8))
model.add(Dense(3, activation='sigmoid'))
# compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
# summarize the model
print(model.summary())
# fit the model
model.fit(dfs, onehot_encoded, epochs=50, verbose=2)
ERROR : 에 ValueError : 체크 모델 대상 오류 : 예상 dense_10 3 개 차원을 가지고 있지만 모양으로 배열을 가지고 할 (30, 3)
나는 아주 좋은 정보를 주었다고 생각한다. 나는 똑같이 기대하고 있었다. 나는 옵션 1을했고 괜찮아 보인다. 확실하지 않은데, 입력 매개 변수로 두 번째 및 세 번째 부분을 수행하는 방법입니다. LSTM 아이디어에 많은 관심이 있습니다. 그렇습니다. 제 데이터는 시간에 따라 다릅니다. 제발 설명해주기 위해 그 덩어리를 써 주실 수 있습니까? 나는이 행성에서 가장 행복한 사람이 될 것입니다. 감사합니다 –
다니엘 대단히 감사합니다. 이거 정말 좋다. 네, 확실히 이것을 정확하게 표시 할 것입니다. 하나의 CSV 파일을 하나의 교육 세트 (5000,3) 차원으로 사용하고 있기 때문에 문제가됩니다. 이 모델은이 부분을 이해하고 있습니까? 훈련을위한 인스턴스는 30 개 뿐이고 CSV 파일은 30 개뿐입니다. 의견에 "예"라고 적혀 있으면 한 번 내 질문을 검토하십시오. 나는 그저 기다리고있다. 훈련에는 몇 시간이 걸릴 수 있기 때문입니다. 지금 당장 올바른 것으로 표시하고 싶습니다. 또 다른 옵션이 있습니까, 이러한 모든 가중치를 저장하고 저장된 파일에서 테스트하기 위해 다시 모델을로드 할 수 있습니다. –
예. 당신의 입력이'(30,5000,3)'과 같은 형태라면'input_shape = (5000,3)'을 사용하는 것이 옳다. 이 모델은 '30 개의 독립적 인 시퀀스', '각 시퀀스의 5000 개의 시간 단계', '각 시간 단계에 대한 3 개의 입력 변수/특징'을 보게 될 것입니다. –