%matplotlib inline
import numpy as np
import os
import matplotlib.pyplot as plt
fnames = np.array([f'train/' for f in sorted(os.listdir('train/'))])
labels = np.array([(0 if 'cat' in fname else 1) for fname in fnames])
img = plt.imread(fnames[0])
#plt.imshow(img)
print(fnames)
resnet50_model = resnet50(weights='imagenet')
from sklearn.model_selection import train_test_split
x_train,x_valid, y_train, y_valid =train_test_split(fnames,labels,test_size=0.2, random_state=1)
from keras.preprocessing import image
from tqdm import tqdm
def path_to_tensor(img_path):
# 用pil載入rgb影象為pil.image.image型別
img = image.load_img(img_path, target_size=(224, 224))
# 將pil.image.image型別轉化為格式為(224, 224, 3)的3維張量
x = image.img_to_array(img)
# 將3維張量轉化為格式為(1, 224, 224, 3)的4維張量並返回
return np.expand_dims(x, axis=0)
def paths_to_tensor(img_paths):
list_of_tensors = [path_to_tensor(img_path) for img_path in tqdm(img_paths)]
return np.vstack(list_of_tensors)
def resnet50_predict_labels(img_path):
# 返回img_path路徑的影象的**向量
img = preprocess_input(path_to_tensor(img_path))
return np.argmax(resnet50_model.predict(img))
def detector(img_path):
prediction = resnet50_predict_labels(img_path)
if (prediction <= 268) & (prediction >= 151):
index=1
elif (prediction <= 285) & (prediction >= 281):
index=0
else:
index=prediction
return index
for i in range(100):
img = plt.imread(x_train[i])
plt.imshow(img);
plt.show()
index_num=detector(x_train[i])
if index_num ==0:
call='cat'
elif index_num ==1:
call='dog'
else:
call=index_num
print(f'the picture is \n')
print(index_num)
kaggle貓狗大戰
kaggle貓狗大戰 kaggle上的貓狗大戰,即對貓狗的分類 沒有特徵資料,只有,所以只能運用神經網路對其訓練 看了大量的kaggle上的公開例子,大多運用tensorflow或者keras建立神經網路,因為最近在學習torch,因此,想用torch建立卷積神經網路進行建模 但整個過程遇到了很多坑...
洛谷 貓狗大戰
初見安 這裡是傳送門 洛谷p1489 貓狗大戰 乙個挺冷門的題啊 也蠻有意思的。把n個數劃分成兩部分,讓兩部分的數的總和的差值盡量小。其實一眼dp,但是要往正解的方向去想是有點點難度的 明顯我們確定乙個集合,另乙個集合也就可以確定了。思考暴力一點的做法 如果我們可以列舉乙個集合的所有可能性,是不是就...
DP luoguP1489貓狗大戰
題目大意 給你乙個序列 長度小於等於200 你需要把它分成兩半而且兩個被分開的序列長度差不超過一 如果是偶數的話那麼就必須是一樣長咯 要求分成的兩個序列的總和差的絕對值最小 做題思路 1.既然是序列總和,而且分成兩半,那麼我為什麼不先預處理出一開始整個序列的和呢?2.既然是兩個序列的總和,那麼必然會...