import numpy as np import matplotlib.pyplot as plt # matplotlib は tensorslow の前でimportすること # ※ バージョンによっては後でインスールするとエラー出る import tensorflow as tf np.set_printoptions(formatter={'float': '{: 0.3f}'.format}) # パーセプトロンの数 N = ? # 入力層の数 K = ? # 隠れ層の数 M = ? # 出力層の数 #学習率 r = ? #エポック数 E = ? #学習データセットのサイズ L = ? #バッチサイズ B = ? # 画像データ images = np.array( [ # 画像0 [ [1, 0, 1], [1, 1, 1], [1, 0, 1] ], # 画像1 [ [0, 1, 0], [1, 0, 1], [0, 1, 0] ], # 画像2 [ [0, 1, 0], [1, 1, 1], [0, 1, 0] ], # 画像3 [ [1, 0, 1], [0, 1, 0], [1, 0, 1] ], # 未知画像 [ [1, 1, 0], [1, 1, 1], [1, 0, 1] ] ] ) # 画像データから学習用入力信号を作成 data_training = tf.constant(images[:L].reshape(L,N), dtype=tf.float32) # 学習用ラベル label_training = tf.constant( [ #画像 0,1 はクラス 0 [?,?], [?,?], #画像 2,3 はクラス1 [?,?], [?,?] ] , dtype=tf.float32 ) # 未知画像から未知入力信号を作成 data = tf.constant(images[L].reshape(1,N), dtype=tf.float32) # 画像表示 for i in range(L): print(f'画像{i}') plt.imshow(images[i],cmap='gray') plt.show() print('未知画像') plt.imshow(images[L],cmap='gray') plt.show() print('学習用入力信号') print( data_training.numpy() ) print('\n学習用ラベル') print( label_training.numpy() ) print('\n未知入力信号') print( data.numpy() ) print('') print(f'学習率={r}') print(f'エポック数={E}') print(f'学習データセットサイズ={L}') print(f'バッチサイズ={B}') # 3層ニューラルネットワークの構築 # DL_3_1 からコピー ? # 学習設定 # テキストを参考にする ? # モデルの概要表示 model.summary() # 学習前の状態 ls, acc = model.evaluate(data_training, label_training, verbose=0) print('\n学習前') print(f'学習データセット : 損失={ls:0.2f}, 正解率={acc:0.2f}') print('画像0〜3の予測値') print(model.predict(data_training)) print('') # ディープラーニング実行 # 学習中の経過を表示したい場合は verbose=1 にする # テキストを参考にする ? # 学習後の状態 # テキストを参考にする ? print('\n学習後') print(f'学習データセット : 損失={ls:0.2f}, 正解率={acc:0.2f}') print('画像0〜3の予測値') print(model.predict(data_training)) print('') print('未知画像の予測値') print(model.predict(data))