우선 본 내용은 아래의 링크를 참조하였다.
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
환경을 구축하는 것은 아래를 참조하자.
R tensorflow-gpu 설정하기
오늘은 R쓰시는 분들이 딥러닝 할 때 GPU세팅을 힘들어해서 R에서 tensorflow를 gpu로 돌리기 위한 세팅을 해보겠다. 지금은 tensorflow라이브러리에서 install_tensorflow()를 활용하면 쉽게 가능하다고 하
rcj92.tistory.com
우선 elmo는 tensorflow1을 사용하기 때문에 기존의 tensorflow2를 사용할 수 없다.
그래서 tensorflow1 가상환경을 만들어 보자.
conda_create로 miniconda의 가상환경을 만들어보자.
근데 잘 만들어 졌는데 문제가 발생한다.
use_condaenv()함수를 사용해도 환경이 바뀌지 않는다.
찾아보니 전역적으로 '.Reviron'에서 설정할 수 있게 되어있다.
내 경우 miniconda의 경로가 /home/ducj/.local/share/r-miniconda/envs/test이므로
.Reviron파일에서 아래와 같이 입력해주고 저장해준다.
RETICULATE_PYTHON='/home/ducj/.local/share/r-miniconda/envs/test/bin/python'
library(keras)
library(tensorflow)
library('readr')
library('stringr')
conda_create('test',packages = 'tensorflow-gpu=1.15')
conda_install('test',packages='tensorflow-hub')
file.edit(file.path("~", ".Renviron"))
reticulate::py_config()
tensorflow_hub는 google에서 제공해주는 모형을 가져와 쓸 수 있다.
안타깝게도 tensorflow2은 아직 지원하지 않고 있다.
hub=import('tensorflow_hub')
elmo = hub$Module("https://tfhub.dev/google/elmo/3")
library('readr')
library('stringr')
data=read.csv("https://raw.githubusercontent.com/mohitgupta-omg/Kaggle-SMS-Spam-Collection-Dataset-/master/spam.csv")
data$v1=factor(data$v1)
n_of_train = as.integer(length(X_data) * 0.8)
n_of_test = as.integer(length(X_data) - n_of_train)
X_train = X_data[1:n_of_train]
y_train = array(as.integer(y_data[1:n_of_train]))
X_test = array(X_data[n_of_train:length(X_data)])
y_test = array(as.integer(y_data[n_of_train:length(y_data)]))
ELMoEmbedding=function(x){
return(elmo(tf$squeeze(tf$cast(x,dtype='string')),as_dict=T,signature="default")['default'])
}
sess=tf$Session()
K=keras::backend()
K$set_session(sess)
sess$run(tf$global_variables_initializer())
sess$run(tf$tables_initializer())
input_text=layer_input(shape=c(1,NULL),dtype='string')
embedding_layer=input_text%>%layer_lambda(ELMoEmbedding,output_shape = c(1024L,NULL))
hidden_layer=embedding_layer$default%>%layer_dense(c(256L),activation='relu')
output_layer=hidden_layer%>%layer_dense(c(NULL,1L),activation='sigmoid')
model = keras_model(inputs=list(input_text), outputs=output_layer)
model$compile(loss='binary_crossentropy', optimizer='adam', metrics=list('accuracy'))
history = model%>%keras::fit(X_train, y_train, epochs=1, batch_size=30)
'통계 및 인공지능' 카테고리의 다른 글
WaveNet in R (0) | 2021.05.02 |
---|---|
1D-CNN & Multi input Multi output Model in R (1) | 2021.05.02 |
rTorch LSTM 예제 코드(GPU 사용) (0) | 2021.04.24 |
R tensorflow LSTM 예제 코드(GPU 사용) (0) | 2021.04.24 |
트리모델과 더미화 (0) | 2021.02.28 |