IT_World

[error] ModuleNotFoundError: No module named 'tensorboard' 본문

Artificial intelligence, AI/error

[error] ModuleNotFoundError: No module named 'tensorboard'

engine 2021. 6. 1. 11:01

ModuleNotFoundError: 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

잠시 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

 

torch.utils.tensorboard — PyTorch 1.8.1 documentation

torch.utils.tensorboard Before going further, more details on TensorBoard can be found at https://www.tensorflow.org/tensorboard/ Once you’ve installed TensorBoard, these utilities let you log PyTorch models and metrics into a directory for visualization

pytorch.org

 

Comments