博文

電腦視覺模型學習Day-1

图片
終於把電腦搬來學校了 這樣研究所寫模型需要花的電費和網路費用就可以回到學校了 不用一直燒家裡的電費 看能不能支撐我多花點時間跑模型 來學校建立環境第一天 覺得Anaconda很容易打不開 直接轉Docker 然後發現學校網路雖快但還是成為寫模型的瓶頸 也發現原來要設定可以寫模型的環境其實還蠻耗時間的 奉勸大家 真的要用學校的網路建立模型訓練所需的環境 請避開大家都在用網路的時間

修正layer_name = 'block1_conv2'

原始程式碼: layer_name = 'block1_conv2' layer = layer_dict[layer_name] activations = get_activations(vgg16, layer, input_img_data) 出現錯誤: ValueError Traceback (most recent call last) Cell In[35], line 3 1 layer_name = 'block1_conv2' 2 layer = layer_dict[layer_name] ----> 3 activations = get_activations(vgg16, layer, input_img_data) Cell In[34], line 2, in get_activations(model, layer, input_img_data) 1 def get_activations(model, layer, input_img_data): ----> 2 activations_f = K.function([model.layers[0].input, K.learning_phase()], [layer.output,]) 3 activations = activations_f((input_img_data, False)) 4 return activations File C:\ProgramData\Anaconda3\lib\site-packages\keras\src\backend.py:4656, in function(inputs, outputs, updates, name, **kwargs) 4650 raise ValueError( 4651 "`updates` argument is not supported during " 4652 "eager execution. You pass...
原始程式碼: <img src=" https://miro.medium.com/ max/1250/1*Gs_ f7aWJQktSkIWLy2m70g.png " width="75%"> 出現錯誤: Cell In[13], line 1 <img src=" https://miro.medium.com/ max/1250/1*Gs_ f7aWJQktSkIWLy2m70g.png " width="75%"> ^   SyntaxError :  invalid syntax   改成這樣就可以了 from IPython.display import Image Image(url="https://miro.medium.com/max/1250/1*Gs_f7aWJQktSkIWLy2m70g.png", width=500)

修正plt.imshow(generate_pattern('block3_conv1', 0))

 原始程式碼: plt.imshow(generate_pattern('block3_conv1', 0)) plt.show() 出現錯誤: RuntimeError Traceback (most recent call last) Cell In[39], line 1 ----> 1 plt.imshow(generate_pattern('block3_conv1', 0)) 2 plt.show() Cell In[36], line 7, in generate_pattern(layer_name, filter_index, size) 4 loss = K.mean(layer_output[:, :, :, filter_index]) 6 # Compute the gradient of this loss with respect to the input image ----> 7 grads = K.gradients(loss, model.input)[0] 9 # Normalize the gradient 10 grads /= (K.sqrt(K.mean(K.square(grads))) + 1e-5) File C:\ProgramData\Anaconda3\lib\site-packages\keras\src\backend.py:4695, in gradients(loss, variables) 4683 @keras_export("keras.backend.gradients") 4684 @doc_controls.do_not_generate_docs 4685 def gradients(loss, variables): 4686 """Returns the gradients of `loss` w.r.t. `variables`. 4687 4688 Args: (...) 4693 A...
原始程式碼: def generate_pattern(layer_name, filter_index, size=150):     # 構建一個最大化激活的 損失函數  loss function     # 考慮的層的 第n個 filter     layer_output = model.get_layer(layer_name). output     loss = K.mean(layer_output[:, :, :, filter_index])     # 計算這種損失的輸入圖像的梯度     grads = K.gradients(loss, model.input)[0]     # Normalization gradient 梯度     grads /= (K.sqrt(K.mean(K.square(grads) )) + 1e-5)     # 函數返回 給定 輸入圖片的 損失 和 梯度     iterate = K.function([model.input], [loss, grads])         # 帶有一些噪音的灰色圖像     input_img_data = np.random.random((1, size, size, 3)) * 20 + 128.     # Run 梯度上升 40步     step = 1.     for i in range(40):         loss_value, grads_value = iterate([input_img_data])         input_img_data += grads_value * step             img = input_img_da...

修正input_img_data = np.random.random((1, 150, 150, 3)) * 20 + 128.

原始碼如下: # 灰色圖像 帶有一些噪音 input_img_data = np.random.random((1, 150, 150, 3)) * 20 + 128. # 40 steps forgradient ascent step = 1. # 每個梯度更新的幅度 for i in range(40): # 計算損失值和梯度值 loss_value, grads_value = iterate([input_img_data]) # 調整輸入圖像的方向,使損失最大化 input_img_data += grads_value * step 出現錯誤: NameError Traceback (most recent call last) Cell In[30], line 9 6 step = 1. # 每個梯度更新的幅度 7 for i in range(40): 8 # 計算損失值和梯度值 ----> 9 loss_value, grads_value = iterate([input_img_data]) 10 # 調整輸入圖像的方向,使損失最大化 11 input_img_data += grads_value * step   NameError: name 'iterate' is not defined   修正成這樣就可以了 import numpy as np import tensorflow as tf from tensorflow.keras import optimizers # The rest of your code remains the same # Compile your model before using it in the gradient computation model.compile(loss='binary_crossentropy',               optimizer=optimizers.RMSpr...

修正iterate = K.function([model.input], [loss, grads])

原始程式碼: iterate = K.function([model.input], [loss, grads]) # 測試一下 import numpy as np loss_value, grads_value = iterate([np.zeros((1, 150, 150, 3))]) 出現錯誤 ValueError Traceback (most recent call last) Cell In[28], line 1 ----> 1 iterate = K . function ( [ model . input ] , [ loss , grads ] ) 3 # 測試一下 4 import numpy as np File C:\ProgramData\Anaconda3\lib\ site-packages\keras\src\ backend.py:4656 , in function (inputs, outputs, updates, name, **kwargs) 4650 raise ValueError ( 4651 " `updates` argument is not supported during " 4652 " eager execution. You passed: %s " % (updates,) 4653 ) 4654 from keras . src import models -> 4656 model = models . Model ( inputs = inputs , outputs = outputs ) 4658 wrap_outputs = isinstance (outputs, list ) and len (outputs) == 1 4660 def func (model_inputs): File C:\ProgramData\Anaconda3\lib\ site-packages...