値に白黒の色を付けたい。
今回mnist手書き文字を動かし、重みを取得しました。
3層で構築しました。そして1から2層の(784,512)からなる重みを取得し、とりあえず1列目の値を抽出しました。
この抽出したX=(784,1)からなる最小の値に黒、最大の値に白を与え、(28,28)でreshapeすることでmatplotにしたいです。
試していること
(コード全容の後)
w=model.get_layer('dense') #で層を指定。
W=w.get_weights()[0] #重みの取得
X=W[:, 0] #とりあえず1列目を抽出
ここで得た値は「0.013453・・・」など小数かつ負の値も含みます。
なので、次に
X1=np.reshape(X,(-1, 28, 28, 1)) #reshapeして
plt.imshow(X1, cmap = 'gray', vmin = 0, vmax = 255, interpolation = 'none')
にまでもっていきたいのですが、どのようにすれば良いのでしょうか。
ご教授願います。
コード全容
python
1import tensorflow as tf 2import datetime 3import numpy as np 4import matplotlib.pyplot as plt 5 6mnist = tf.keras.datasets.mnist 7 8(x_train, y_train),(x_test, y_test) = mnist.load_data() 9x_train, x_test = x_train / 255.0, x_test / 255.0 10 11model = tf.keras.models.Sequential([ 12 tf.keras.layers.Flatten(input_shape=(28, 28)), 13 tf.keras.layers.Dense(512, activation=tf.nn.relu), 14 tf.keras.layers.Dropout(0.2), 15 tf.keras.layers.Dense(10, activation=tf.nn.softmax) 16]) 17 18 19model.compile(optimizer='adam', 20 loss='sparse_categorical_crossentropy', 21 metrics=['accuracy']) 22 23 24 25log_dir="logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M") 26file_writer = tf.summary.create_file_writer(log_dir) 27with file_writer.as_default(): 28 images = np.reshape(x_train[0:10], (-1, 28, 28, 1)) 29 tf.summary.image("train", images, max_outputs=10, step=1) 30 31 32 33tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1) 34 35 36 37model.fit(x=x_train, 38 y=y_train, 39 epochs=5, 40 validation_data=(x_test, y_test), 41 callbacks=[tensorboard_callback]) 42 43model.evaluate(x_test, y_test)
環境
Anaconda3
python3.7.7
tensorflow2.3.0
keras2.4.0
あなたの回答
tips
プレビュー