閲覧頂きありがとうございます。
末尾のサイトを見て、DockerへのanacondaとVScodeの導入はうまく行ったのですが、VScodeでプログラムを実行しようとするとうまく実行できません。windowsで開発していたときは、(Dockerは使っていませんでしたが)VScodeのPATHやshellの設定を変更することで実行できていました。
そのため、問題はPATH周辺だと思うのですがLinuxに疎いため、ご教授いただけますと幸いです。
よろしくお願いいたします。
anaconda等の導入のための参考サイト↓
https://qiita.com/komiya_____/items/96c14485eb035701e218
追記(コード群)
dockerfile, docker-compose.yml, mnist.pyのコードを追記しました。mnist.pyはKeras Blogのものをほぼそのまま使ったものになります。また、有用な情報となるかわかりませんが、Dockerの環境構築は以下の記事を参考にしました。(ubuntuのバージョンは記事に合わせて18.04にしてあります)
参考記事:https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa
Keras Blog:https://blog.keras.io/building-autoencoders-in-keras.html
Dockerfile
1# ベースイメージ名:タグ名 2FROM continuumio/anaconda3:2019.03 3 4# pipをアップグレードし必要なパッケージをインストール 5RUN pip install --upgrade pip && \ 6 pip install autopep8 && \ 7 pip install Keras && \ 8 pip install tensorflow 9 10# コンテナ側のルート直下にworkdir/(任意)という名前の作業ディレクトリを作り移動する 11WORKDIR /workdir 12 13# コンテナ側のリッスンポート番号 14# 明示しているだけで、なくても動く 15EXPOSE 8888 16 17# ENTRYPOINT命令はコンテナ起動時に実行するコマンドを指定(基本docker runの時に上書きしないもの) 18# "jupyter-lab" => jupyter-lab立ち上げコマンド 19# "--ip=0.0.0.0" => ip制限なし 20# "--port=8888" => EXPOSE命令で書いたポート番号と合わせる 21# ”--no-browser” => ブラウザを立ち上げない。コンテナ側にはブラウザがないので 。 22# "--allow-root" => rootユーザーの許可。セキュリティ的には良くないので、自分で使うときだけ。 23# "--NotebookApp.token=''" => トークンなしで起動許可。これもセキュリティ的には良くない。 24ENTRYPOINT ["jupyter-lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token=''"] 25 26# CMD命令はコンテナ起動時に実行するコマンドを指定(docker runの時に上書きする可能性のあるもの) 27# "--notebook-dir=/workdir" => Jupyter Labのルートとなるディレクトリを指定 28CMD ["--notebook-dir=/workdir"] 29 30
yaml
1version: '3' # docker-composeファイルの書式バージョン。最新の’3’を指定(2021/6/12現在) 2services: 3 dev: # 任意の名前(ディレクトリ名 + dev がコンテナ名となります) 4 build: 5 context: . 6 dockerfile: Dockerfile_study 7 image: study 8 ports: 9 - "8080:8888" 10 volumes: 11 - .:/workdir 12
Python
1from keras.layers import Input, Dense 2from keras.models import Model 3from keras.datasets import mnist 4import numpy as np 5from sklearn.model_selection import train_test_split 6import matplotlib.pyplot as plt 7 8# encoderの次元 9encoding_dim = 32 10 11# 入力用の変数 12input_img = Input(shape=(784, )) 13# 入力された画像がencodeされたものを格納する変数 14encoded = Dense(encoding_dim, activation='relu')(input_img) 15# ecnodeされたデータを再構成した画像を格納する変数 16decoded = Dense(784, activation='sigmoid')(encoded) 17# 入力画像を再構成するModelとして定義 18autoencoder = Model(input_img, decoded) 19 20# 入力する画像をencodeする部分 21encoder = Model(input_img, encoded) 22encoded_input = Input(shape=(encoding_dim, )) 23decoder_layer = autoencoder.layers[-1] 24# encodeされた画像データを再構成する部分 25decoder = Model(encoded_input, decoder_layer(encoded_input)) 26 27# AdaDeltaで最適化, loss関数はbinary_crossentropy 28autoencoder.compile(optimizer='adam', loss='binary_crossentropy') 29 30# MNISTデータを前処理する 31(x_train, _), (x_test, _) = mnist.load_data() 32x_train, x_valid = train_test_split(x_train, test_size=0.175) 33x_train = x_train.astype('float32')/255. 34x_valid = x_valid.astype('float32')/255. 35x_test = x_test.astype('float32')/255. 36x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:]))) 37x_valid = x_valid.reshape((len(x_valid), np.prod(x_valid.shape[1:]))) 38x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:]))) 39 40# autoencoderの実行 41autoencoder.fit(x_train, x_train, 42 epochs=50, 43 batch_size=256, 44 shuffle=True, 45 validation_data=(x_valid, x_valid)) 46 47# 画像化して確認 48encoded_img = encoder.predict(x_test) 49decoded_img = decoder.predict(encoded_img) 50 51n = 10 52plt.figure(figsize=(20, 4)) 53for i in range(n): 54 ax = plt.subplot(2, n, i+1) 55 plt.imshow(x_test[i].reshape(28, 28)) 56 plt.gray() 57 ax.get_xaxis().set_visible(False) 58 ax.get_yaxis().set_visible(False) 59 60 ax = plt.subplot(2, n, i+1+n) 61 plt.imshow(decoded_img[i].reshape(28, 28)) 62 plt.gray() 63 ax.get_xaxis().set_visible(False) 64 ax.get_yaxis().set_visible(False) 65plt.show()
回答1件
あなたの回答
tips
プレビュー