🔧 1. Python 3.12 + Keras 환경 세팅
필수 명령어:
pip install --upgrade pip
pip install tensorflow keras
✅ 이 조합이면 TensorFlow가 Keras의 백엔드로 자동 지정되어 작동함
🧩 2. Keras 구조 이해
항목 | 설명 |
---|---|
tensorflow.keras | ✅ 안정적인 공식 사용 방식 (TF 내장 Keras) |
import keras | 🔧 Keras Core 3.x (2023년 말부터 등장) |
keras.src.* | ❌ 내부 전용 경로. 직접 사용 금지 |
✅ 3. 코드 작성: 권장 방식 (TensorFlow 백엔드)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([
Dense(10, activation='relu', input_shape=(4,)),
Dense(1, activation='sigmoid')
])
model.summary()
👍 이 방식은 Keras 버전 상관없이 항상 안전하고 유지보수도 잘 됩니다.
✅ 4. 코드 작성: Keras Core 방식 (원한다면)
import keras
model = keras.models.Sequential([
keras.layers.Dense(10, activation="relu"),
keras.layers.Dense(1, activation="sigmoid")
])
⚠️ 단, 이 방식은 백엔드를 명확히 설치하고 연결해야 함
⚠️ 5. 백엔드 관련 추가 설정 (선택)
Keras Core만 쓰고 TensorFlow/JAX/Torch 없이 실행하려 하면 에러 발생합니다. 백엔드가 없기 때문입니다.
- TensorFlow 백엔드:
pip install tensorflow
- PyTorch 백엔드:
pip install torch
- JAX 백엔드:
pip install jax jaxlib
설치된 백엔드 중 자동으로 하나가 선택되며, 특정 백엔드를 강제로 지정하려면
KERAS_BACKEND=tensorflow
환경 변수 설정 필요
📂 6. 커널 & PyCharm 설정 주의
PyCharm이나 Jupyter에서 실행 시에는 반드시 설치된 tensorflow
가 포함된 Python 환경이 선택되어야 합니다. 예:
which python
/usr/local/bin/python3.12
이 환경에 pip install tensorflow keras
가 되어 있어야 함
🛑 7. 피해야 할 것들
항목 | 이유 |
---|---|
pip install keras.layers | ❌ 존재하지 않음 |
from keras.src... | ❌ 내부 전용 |
Python 3.13 사용 | ❌ 아직 TF 미지원 |
TensorFlow 없이 keras 사용 | ❌ 백엔드 없음 에러 |
✅ 요약: 당신이 해야 할 단 3가지
- Python 3.12 환경 준비
→/usr/local/bin/python3.12
- 필수 설치
pip install tensorflow keras
- 코드는 항상 이렇게 씁니다:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
필요하시면 이걸 PDF나 .md
문서로도 정리해드릴 수 있어요. 어떤 형태로 정리해드릴까요? 아니… 틀린듯…
3.12 에서는 이런식으로 import 해서 써야 한다. 2025년 5월 기준으로 최신 버전 쓰시는 분들은 그냥 삽질 하면서 안정화를 기다린다고 생각하면 될 듯. 물고기가 아닌, 낚시하는 방법인 “생각의 방식”은 여기 남겨둠.
import keras
from keras.src.layers import Dense
from keras.src.utils import to_categorical
# from tensorflow.keras.models import Sequential
# from tensorflow.keras.layers import Dense
# 신경망 모델을 초기화
model = keras.Sequential()
# 6개의 노드가 있는 첫 번째 은닉 레이어를 추가합니다.
# Input_dim은 x_values 또는 입력 레이어의 수/특성 수를 나타냅니다.
# activation은 노드/뉴런이 활성화되는 방식을 나타냅니다. 우리는 relu를 사용할 것입니다. 다른 일반적인 활성화 방식은'sigmoid' 및 'tanh'입니다.
model.add(Dense(6, input_dim=4, activation='relu'))
# 6개의 노드가 있는 두 번째 은닉 레이어를 추가합니다.
model.add(Dense(6, activation='relu'))
# 3개의 노드가 있는 출력 레이어를 추가합니다.
# 사용된 activation은 'softmax'입니다. Softmax는 범주형 출력 또는 대상을 처리할 때 사용됩니다.
model.add(Dense(3,activation='softmax'))
# 모델을 컴파일합니다. optimizer는 모델 내에서 조정하는 방법을 의미합니다. loss은 예측된 출력과 실제 출력 간의 차이를 나타냅니다.
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
model.summary()
import pandas as pd
df = pd.read_csv("./datasets/iris_datasets.data",header=None)
names = ["sepal_length", "sepal_width","petal_length", "petal_width", "class"]
df.columns = names
print(df.head())
print(df.info())
print(df.describe())
# 각 클래스의 데이터 포인트 수 출력
print(df['class'].value_counts())
# 각기 다른 클래스에 대하여 다른 숫자를 지정한 딕셔너리
# 원-핫 인코딩으로 4개 열이 아닌 3개 열만 생성되도록 0부터 시작하는 값을 사용합니다.
label_encode = {"class": {"Iris-setosa":0, "Iris-versicolor":1, "Iris-virginica":2}}
# .replace를 사용하여 다른 클래스를 숫자로 변경
df.replace(label_encode,inplace=True)
# 각 클래스의 데이터 포인트 수를 출력하여 클래스가 숫자로 변경되었는지 확인
print(df['class'].value_counts())
# 클래스를 y_values로 추출
y_values = df['class']
# y_values 원-핫 인코딩
y_values = to_categorical(y_values)
print(y_values)
답글 남기기