IT_World
[error] ModuleNotFoundError: No module named 'tensorboard' 본문
[error] ModuleNotFoundError: No module named 'tensorboard'
engine 2021. 6. 1. 11:01ModuleNotFoundError: No module named 'tensorboard' 에러 발생
환경 os : Ubuntu 18.64
Tensorflow Keras
가장 먼저 텐서보드 설치
pip install tensorboard
#tensorboard --logdir=runs
예시 코드
#1. 데이터
import numpy as np
dataset = np.array(range(1,101))
size = 5
#데이터 전처리
def split_x(seq, size):
aaa = [] #는 테스트
for i in range(len(seq)-size+1):
subset = seq[i:(i+size)]
# aaa.append([item for item in subset])
aaa.append(subset)
return np.array(aaa)
datasets = split_x(dataset, size)
x = datasets[:, :4]
y = datasets[:, 4]
# print("x.shape:", x.shape)
x = x.reshape(x.shape[0], x.shape[1], 1) # (4,3,1)
# print("reshape x.shape:", x.shape)
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(
x, y, train_size=0.7)
x_test ,x_val, y_test, y_val = train_test_split(
x_train, y_train, train_size=0.7)
#모델을 구성하시오.
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, LSTM, Input
input1 = Input(shape=(x.shape[1],1))
lstm = LSTM(75, activation='relu')(input1)
dense = Dense(180, activation='relu')(lstm)
dense = Dense(150, activation='relu')(dense)
dense = Dense(60, activation='relu')(dense)
dense = Dense(10, activation='relu')(dense)
output1 = Dense(1)(dense)
model = Model(inputs=input1, outputs=output1)
#3. 컴파일 및 훈련
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
from tensorflow.keras.callbacks import EarlyStopping, TensorBoard # 텐서보드 = 웹페이지 시각화
es = EarlyStopping(monitor='loss', patience=15)
to_hist = TensorBoard(log_dir="graph", #log가 들어갈 폴더 지정 -> graph라는 폴더 만들어 줘야함
histogram_freq=0,
write_graph=True,
write_images=True)
history = model.fit(
x_train,
y_train,
callbacks=[es,to_hist],
validation_data=(x_val,y_val),
epochs=800,
verbose=2
)
'''
1.cmd창 켜기
2.graph 폴더로 들어가서 (cd)
3.명령어 tensorboard --logdir=.
4.http://localhost:6006/ - 텐서보드 웹
#graph 폴더에 파일들이 생기는 것을 볼 수 있다
#TensorBoard 2.3.0 at http://localhost:6006/ (Press CTRL+C to quit)
#위에 표시된 url 접속
#log가 겹칠 수 있다. 새로 볼 경우에는 로그를 지우고 새로 하는게 좋을 수 있다.
'''
#4. 평가, 예측
loss, mae = model.evaluate(x_test, y_test)
print("loss: ", loss)
print("mae: ", mae)
to_hist = TensorBoard(log_dir="graph", #log가 들어갈 폴더 지정 -> graph라는 폴더 만들어 줘야 함
histogram_freq=0,
write_graph=True,
write_images=True)
history = model.fit(
x_train,
y_train,
callbacks=[es, to_hist],
validation_data=(x_val,y_val),
epochs=800,
verbose=2
)
Pytorch
가장 먼저 텐서 보드 설치
pip install tensorboardX
or
pip install tensorboard
예시 코드
import torch
from tensorboardX import SummaryWriter
writer = SummaryWriter()
x = torch.arange(-5, 5, 0.1).view(-1, 1)
y = -5 * x + 0.1 * torch.randn(x.size())
model = torch.nn.Linear(1, 1)
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)
def train_model(iter):
for epoch in range(iter):
y1 = model(x)
loss = criterion(y1, y)
writer.add_scalar("Loss/train", loss, epoch)
optimizer.zero_grad()
loss.backward()
optimizer.step()
train_model(10)
writer.flush()
writer.close()
따로 텐서 보드 위치를 지정해주지 않으면 자동으로 폴더랑 파일이 생성된다.
잠시 Jun01_09-38-26를 20210527-0로 이름을 변경했다.
기존에 돌렸던 텐서보드 디렉터리를 들어가면 Accuracy / Loss 폴더가 생성된 것을 볼 수 있다.
하위로 들어가면 train 폴더가 있다. 그 밑에 event 파일이 있으면 완성
epoch 가 돌 때마다 하나씩 쌓일 것이다.
또 다른 예제
import torch
import torchvision
from tensorboardX import SummaryWriter
from torchvision import datasets, transforms
# Writer will output to ./runs/ directory by default
writer = SummaryWriter()
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# Have ResNet model take in grayscale rather than RGB
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))
grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()
실행방법
실행방법은 모두 동일하다.
1. cmd창 켜기 : ctrl +t
2.graph 폴더로 들어가서 : cd /graph
3. 명령어 : tensorboard --logdir=.
ex (tensorflow) @:~/graph$ tensorboard --logdir=.
4. 인터넷 검색 가서 주소창에 입력 : http://localhost:6006/
#TensorBoard 2.3.0 at http://localhost:6006/ (Press CTRL+C to quit)
#위에 표시된 url 접속
#log가 겹칠 수 있다. 새로 볼 경우에는 로그를 지우고 새로 하는 게 좋을 수 있다.
+
해당 폴더로 들어가서 확인해보니 tensorboard 명령을 찾을 수 없습니다
떠서 torch 환경변수로 변경해주고 실행하니 잘 된다.
코드 출처 : https://pytorch.org/docs/stable/tensorboard.html