2023年01月09日
pyinstallerでexe化するとログ関係でエラー
console Trueだとエラーにならないが、Falseにすると
Traceback (most recent call last):
File "logging\__init__.py", line 1086, in emit
AttributeError: 'NoneType' object has no attribute 'write'
などと出る。
#fp = open('./ログファイル.txt', 'w')
#sys.stderr = fp
#sys.stdout = fp
とログの出力先を指定してもいけるっぽいが
https://github.com/kivy/kivy/issues/8074
pip install pyinstaller==5.6.2 pyinstaller-hooks-contrib==2022.13
を見てバージョン下げたらとりあえず動作しました。
投稿者 muuming : 14:31 | コメント (0)
2022年11月19日
open cvで画像重ね
import cv2
import numpy as np
import math
mini = cv2.imread("2763.jpg")
dist = cv2.imread("GGF_6277.jpg")
h,w,c = dist.shape
move_matrix = np.array([[1,0,100],[0,1,50],[0,0,1]]).astype(np.float32)
matrix = move_matrix[0:2, 0:3]
gattai_img = cv2.warpAffine(src=mini,M=matrix,dsize=(w,h),dst=dist,flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_TRANSPARENT)
cv2.imshow("",gattai_img)
cv2.waitKey(0)
投稿者 muuming : 05:48
2022年10月30日
環境準備
環境ぶっ壊して元通りにするとき用のメモ
python インストール(今は3.9系)
非公式だけどここが見やすいとのこと
https://pythonlinks.python.jp/ja/index.html
今回は python-3.9.13-amd64.exe
インストールしてPATH通し
C:\Users\UserName\AppData\Local\Programs\Python\Python39
C:\Users\UserName\AppData\Local\Programs\Python\Python39\Scripts
必要なライブラリインストール
pip install numpy
pip install psutil
#dlibインストールに必要
pip install wheel
pip install CMake
#pip install dlib たとCUDAが有効になっていてexe時にファイルサイズ大きすぎた
pip install -v --install-option="--no" --install-option="DLIB_USE_CUDA" dlib
pip install opencv-python
pip install pip natsort
pip install pyzbar
#kivy関連 https://kivy.org/doc/stable/gettingstarted/installation.html
python -m pip install --upgrade pip setuptools virtualenv
python -m pip install "kivy[base]"
#pyinstaller
pip install pyinstaller
#tflite
bazelインストール
https://github.com/bazelbuild/bazel
右のlatestから(今回は5.3.2) exeで該当するものをダウンロード
どこかに置いてpath通す
https://www.tensorflow.org/install/source_windows?hl=ja
pip install six numpy wheel
pip install keras_applications==1.0.6 --no-deps
pip install keras_preprocessing==1.0.5 --no-deps
pacman -S git patch unzip
#**************多分ここいらないかも*********
python ./configure.py
TensorFlow with ROCm support N
TensorFlow with CUDA support N
#***********************
tensorflow\lite\tools\pip_package
後で ./build_pip_package_with_bazel.sh: line 125: python3: command not found
と怒られるので python.exeを python3.exeにコピー
git bash hereで
./build_pip_package_with_bazel.sh windows
+ exit 0
で正常終了
W:\tensorflow\tensorflow\lite\tools\pip_package\gen\tflite_pip\python3\dist
に tflite_runtime-2.12.0-cp39-cp39-win_amd64.whl
これをインストール pip install tflite_runtime-2.12.0-cp39-cp39-win_amd64.whl
----------------------
tf-bodypixをtfliteで使いたい
pip install tf-bodypix[tflite]
投稿者 muuming : 05:01
2022年10月27日
写真のソート
写真を撮影時刻順に並べる
pip install image-sorting-tool
image-sorting-tool
投稿者 muuming : 12:37 | コメント (0)
2022年10月15日
tensorflow GPU複数使い
シーケンシャルモデルの作成とコンパイルをMirroredStrategyの中に入れる
mirrored_strategy = tf.distribute.MirroredStrategy()
with mirrored_strategy.scope():
model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])
model.compile(loss='mse', optimizer='sgd')
model.fitはMirrored Strategyに入れない
◆Subclassing APの場合Iは???
ネット探しても出てこないなぁ。
投稿者 muuming : 06:27
2022年08月20日
kivy インストール手順メモ
どうもgifファイルがkivyで読み込めなくなった。
エラー出てた
治ったのでやったことをそのまま記載。何が悪かったのかは不明
kivy関連全部アンインストール
https://kivy.org/doc/stable/gettingstarted/installation.html#install-pip
このページの通り
python -m virtualenv kivy_venv
kivy_venv\Scripts\activate
python -m pip install "kivy[base]" kivy_examples
これだけ 以前はあれ入れこれ入れ手動だったがこれでいけるっぽい
念のために今のところ入っているバージョンを記録
certifi 2022.6.15
charset-normalizer 2.1.1
cmake 3.24.1
Cython 0.29.32
dlib 19.24.0
docutils 0.19
h5py 3.7.0
idna 3.3
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
Kivy 2.1.0
kivy-deps.angle 0.3.2
kivy-deps.glew 0.3.1
kivy-deps.sdl2 0.4.5
Kivy-examples 2.1.0
Kivy-Garden 0.1.5
natsort 8.1.0
numpy 1.23.2
opencv-python 4.6.0.66
Pillow 9.2.0
pip 22.2.2
psutil 5.9.1
pygame 2.1.2
Pygments 2.13.0
pypiwin32 223
pywin32 304
pyzbar 0.1.9
requests 2.28.1
setuptools 58.1.0
six 1.16.0
tflite-runtime 2.11.0
urllib3 1.26.11
wheel 0.37.1
python 3.9
投稿者 muuming : 11:15
2022年08月13日
tensorflow lite の利用
まず学習したモデルを変換する
tflite_convert \
--saved_model_dir=モデルへの相対パス \
--output_file=モデルの保存先
拡張子は .tflite をよく使うみたい
------------------------
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model("ALL_HALF_51")
tflite_model = converter.convert()
open("test_model.tflite", "wb").write(tflite_model)
-------------------------------
pythonスクリプトでも行ける
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
推論
import numpy as np
import tensorflow as tf
# Load the TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="converted_model.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test the model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)
投稿者 muuming : 21:43
2022年08月11日
機械学習データ
Googleから画像を一括でダウンロードできるツール「google-images-download」がオススメです。
googleimagesdownload --keywords "ツインテール 女子"
投稿者 muuming : 10:49
2022年08月10日
tensorflow2でかすぎ
tensorflow使っているものをexe化しようとしたらでかすぎ
https://stackoverflow.com/questions/61796196/heroku-tensorflow-2-2-1-too-large-for-deployment
Solution:
Simply replace tensorflow with tensorflow-cpu in your requirements.
GPU対応いらないなら差し替えれば小さくできるよってことっぽい
これは import tensorflow-cpu とかするんじゃなく
pip install tensorflow-cpu で tensorflow自体がcpuモードのものがインストールされるようだ。
なのでPGは変えずにexe化する時にだけcpuモードのものをインストールして梱包すればよいっぽい?
よくわかってない
投稿者 muuming : 16:08
2022年08月08日
pip install version指定
現行のバージョン確認
python
>>import cv2
>>cv2.__version__
pip uninstall opencv-python
インストールできるバージョンの確認
pip install opencv-python==100
とありえないバージョンを入れればエラーとして入れれるバージョンが表示されるので選んで
pip install opencv-python==3.4.5.20
投稿者 muuming : 15:15
2022年06月16日
np.where 複数条件
np.where(( (y_test == 5) | (y_test == 2)), 1, 0)
1,カッコが無いと動かない
2,orではなく|
投稿者 muuming : 06:07
2022年05月19日
kivyでgifの読み込みが失敗する
[ERROR ] [Image ] Error loading
勝手な推測だが、kivy自体はgifなんてわかんないのかもしれない。
ffmpegもしくはPillowインストールで解決した
python -m pip install Pillow
投稿者 muuming : 14:20
2022年02月08日
kivyのexe化でthred使ってる場合
kivyのexe化でmultiprocessing使ってる場合 exeのを実行したら、multiprocessing側の処理でも空のwindowが表示される
よくわからないけどimportしてる段階でwindowオブジェクトを作ってるようだ。
なのでkivy関連のimportを
if __name__ == "__main__" and len(sys.argv) == 1:
from kivy.uix.floatlayout import FloatLayout
といった感じにしておけばexeにしてもうまくいった。thread内でkivyのライブラリが必要な場合は知らね。
別件?でwindowsの場合multiprocessingの処理が固まるのか強制終了するのかおかしかった
これは
from multiprocessing import Process, Queue, freeze_support
freeze_support()
でうまくいいった
投稿者 muuming : 17:04
2022年01月21日
python 標準出力の取得
1,テキストへ
import sys
sys.stdout = open(str(os.getpid()) + ".out", "w", buffering=0) #これでバファリンぐが無くなる!?
print "HELLO WORLD!" #この時点でtemp.txtに"HELLO WORLD!"がwriteされている
sys.stdout.close()
#いつもの標準出力に戻す
sys.stdout = sys.__stdout__
2,データとして取得
import sys
import io
fp = io.StringIO("")
sys.stdout = fp
print("HELLO WORLD!") #この時点でtemp.txtに"HELLO WORLD!"がwriteされている
#sys.stdout.close()
print("poge")
sys.stdout = sys.__stdout__
print("ぽにょ")
print(fp.getvalue())
投稿者 muuming : 18:00
2022年01月05日
python kivyのスレッド
python自体にスレッドの仕組みは入っている
thread = threading.Thread(target=self.showImg, args=(path,file))
thread.start()
とかすれば動作します。
が、しかし、しかしながらkivyの場合はメインスレッド以外から表示を変更することには対応していないよう。画像の表示を変更しようとしても真黒になるだけでした。
こういう時はkivyについてるスレッドの仕組み
Clock.schedule_once(...)
を使うと良いらしい
https://github.com/kivy/kivy/issues/1317
結局 画像を作る重い処理は threading.Thread( で後ろに回して
表で Clock.schedule_interval(self.updateImg, 0.2) として繰り返して 画像が出来上がってたら表示変更という流れにしました。表示変更終わったら Clock.unschedule(self.updateImg) しました
メインスレッド以外での画面更新はやはり対応していないっぽい
Clock.schedule_once や Clock.unscheduleもメインスレッドだと理解した。正しいのかはわからないがw
投稿者 muuming : 15:10
2021年12月31日
dlibがマルチバイトでこける件
dlib.simple_object_detector("ある.dat".encode('Shift_JIS'))
多分プラットフォーム関係なしにutf-8でそのまま渡してるんじゃないかな。
windowsの場合 ↑のように文字コード変換して渡したらうまくいった。
が、windowsの場合でもutf-8で動いてることもあるらしいし、結局OSごとに分けたりも出来ないので、shutil.copyfileでコピーして相対パスで確実にマルチバイト入っていない状況にしてあげてから動作させた。これなら場合分け必要ない。
投稿者 muuming : 10:46
2021年12月26日
kivy exe化
https://kivy.org/doc/stable/guide/packaging-windows.html
python -m PyInstaller --onefile --name myapp myapp.py
で出来たspecを弄る
頭に
from kivy_deps import sdl2, glew
exe = EXE(pyz,
の部分に
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
と exeに取り込む画像類が入ったフォルダを指定
Tree('parts\\'),
a.datas += [
('maru.png', '.\\maru.png', 'DATA'),
('back.png', '.\\back.png', 'DATA'),
('back_press.png', '.\\back_press.png', 'DATA'),
('btnbg.png', '.\\btnbg.png', 'DATA'),
('next.png', '.\\next.png', 'DATA'),
('next_press.png', '.\\next_press.png', 'DATA'),
('select.png', '.\\select.png', 'DATA'),
('my_detector.dat', '.\\my_detector.dat', 'DATA'),
('my_predictor_waku.dat', '.\\my_predictor_waku.dat', 'DATA'),
('ipaexg.ttf', '.\\ipaexg.ttf', 'DATA')
]
で個別にも入れれる
exe = EXE(pyz,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
Tree('parts\\'),
name='idcutter',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
pyinstaller test.spec
投稿者 muuming : 22:26
2021年12月23日
kivy 自分の範囲内であるか?
def on_touch_down(self, touch): if self.collide_point(*touch.pos):
投稿者 muuming : 06:23
2021年12月17日
kivyで値を監視して変化があればfireさせる
kivyで値を監視して変化があればfireさせるためには
class MenuButton(Button): def __init__(self, **kwargs): super(MenuButton, self).__init__(**kwargs) self.hoge = 11 def on_hoge(self,*argv):
ではだめで
class MenuButton(Button):
hoge = NumericProperty(66)
def on_hoge(self,*argv):
で動作する。なんでもかんでも監視してるわけでは無いのね。
投稿者 muuming : 10:35
2021年11月12日
python helpをファイルに保存
import sys
import pydoc
f = open("out.txt", 'w')
sys.stdout = f
pydoc.help(Button)
f.close()
sys.exit()
投稿者 muuming : 10:45
2021年11月10日
kivyのボタンの色がオカシイ
https://stackoverflow.com/questions/20181250/changing-the-background-color-of-a-button-in-kivy
色の指定をしてもくすんだ色になってしまう。
background_normal: ''
も合わせて指定すれば思った色になる
押したときの色の変化は
background_downによるものか?
background_normal: ''
押された時の色は別途変えないといけない
Button:
text: 'RED'
background_normal: ''
background_color:1,0,0,1
on_press: self.background_color = (0,0,1,1)
on_release: self.background_color = (1,0,0,1)
投稿者 muuming : 11:30
kivyのレイアウト
https://qiita.com/kurodae/items/6f1dbd8427f159b63517
AnchorLayout
anchor_xならleft, center, right
anchor_yならtop, center, bottom 9つの位置指定ができるレイアウト
アンカーレイアウトには一つしかwidgetを追加できない
BoxLayout
ウィジェットを水平方向か垂直方向に並べるように配置するレイアウト
self.orientation = "horizontal" or orientation
FloatLayout
絶対位置を指定して配置
ウィンドウの大きさを変えたりしてもオブジェクトはウィンドウに合わせて位置が変化することはない
GridLayout
横に何個、縦に何個と指定してグリッドをうめていくようなレイアウト
投稿者 muuming : 07:59
kivyの勉強メモ
https://pyky.github.io/kivy-doc-ja/gettingstarted/properties.html
Kivyには、次のプロパティが用意されています。
NumericProperty, StringProperty, ListProperty, ObjectProperty, BooleanProperty, BoundedNumericProperty, OptionProperty, ReferenceListProperty, AliasProperty, DictProperty,
これは
class MyClass(object):
def __init__(self):
super(MyClass, self).__init__()
self.numeric_var = 1
こう書けばいいんだけどね・・
-----------------------------------------
https://senablog.com/python-kivy-widget/
ウィジェットの種類について
ウィジェットは以下の5種類に分類できます
UXウィジェット:「ラベル・ボタン・テキストボックス」などの一般的なウィジェット
レイアウト:「ボックスレイアウト・フロートレイアウト」などの配置の方法を指定したりするウィジェット
複合UXウィジェット:「ドロップダウンリスト・ポップアップ」などの複数のウィジェットを組み合わせたウィジェット
図形ウィジェット:Scatter・StencilView
スクリーンマネージャー:スクリーンマネージャー
UXウィジェットの種類
UXウィジェットに分類されるウィジェットは以下の10種類です
ラベル:kivy.uix.label ※リンク:ラベルの基本的な使い方
ボタン:kivy.uix.button ※リンク:ボタンの基本的な使い方
チェックボックス:kivy.uix.checkbox ※リンク:Kivyのチェックボックスの基本的な使い方
テキストボックス:kivy.uix.textinput ※リンク:テキストボックスの実装方法
画像:kivy.uix.image ※リンク:Kivyで背景に画像を表示する方法
スライダ-:kivy.uix.slider
プログレスバー:kivy.uix.progressbar ※リンク:Kivyでプログレスバーを実装する方法
トグルボタン:kivy.uix.togglebutton
スイッチ:kivy.uix.switch
ビデオ:kivy.uix.video
レイアウトの種類
レイアウトに分類されるウィジェットは以下の8種類です
アンカーレイアウト: kivy.uix.anchorlayout
ボックスレイアウト: kivy.uix.boxlayout
フロートレイアウト: kivy.uix.floatlayout
グリッドレイアウト: kivy.uix.gridlayout
ページレイアウト: kivy.uix.pagelayout
相対レイアウト: kivy.uix.relativelayout
散布図レイアウト: kivy.uix.scatterlayout
スタックレイアウト: kivy.uix.stacklayout
投稿者 muuming : 06:54
2021年10月19日
opencvアフィン変換
参考 https://imagingsolution.net/imaging/affine-transformation/
#拡大縮小
scale_matrix = np.array([[scale_x,0,0],[0,scale_y,0],[0,0,1]])
#回転
rotation_matrix = np.array([[math.cos(math.radians(deg)) , -math.sin(math.radians(deg)) , 0.0],[math.sin(math.radians(deg)) , math.cos(math.radians(deg)) , 0.0],[0,0,1]])
#移動
move_matrix = np.array([[1,0,move_x],[0,1,move_y],[0,0,1]])
#拡大して → 回転して → 移動する場合 この順で
matrix_all = move_matrix.dot(rotation_matrix).dot(scale_matrix)
#cv2で使う部分を切り取り
matrix = matrix_tmp[0:2,0:3]
affine_img = cv2.warpAffine(useImg, matrix, (new_w,new_h))#最後の引数は出力サイズ
投稿者 muuming : 12:56 | コメント (0)
2021年09月21日
python exe化
python exe化って簡単なのね。
https://techacademy.jp/magazine/18963
pip install pyinstaller
pyinstaller pythonファイル名
投稿者 muuming : 10:00
2020年12月27日
numpy 範囲指定でアクセス
[[0,1,2]
[3,4,5]]
a[0,2] => php的な書き方だと a[0][2] つまり 2
a[:,0] 一次元目は全部 2次元目は一つ目のみ [0,3]
深くはわかってないのでその都度テストしよう
投稿者 muuming : 20:07
python の引数のコロン
def training_step(g: generator, d: Discriminator,
などのコロン以降は説明との事。無くても動くしチェックも基本されないそうな。
投稿者 muuming : 17:08
損失関数あれこれ
tf.keras.losses.SparseCategoricalCrossentropy 入力がラベルidの数値単体の場合
tf.keras.losses.CategoricalCrossentropy 入力がone-hotの場合
■交差エントロピー
真の確率分布pは(1, 0, 0)
推定した確率分布qが(0.8, 0.1, 0.1)
損失 = −(1∗log0.8 + 0∗log0.1 + 0∗log0.1)
#正解の推定確率分布しか見てない
----------------
BinaryCrossentropy
#不正解の確率分布も正しさの確認に含める
損失 = −(1∗log0.8 + 1∗log(1-0.1) + 1∗log(1-0.1)) / 3
----------------
from_logits=True について
基本 from_logits=False なので通常は予測値を渡すときにsoftmaxで値の合計1にして渡すが、それなしにdense(10)とかを放り込むときは from_logits=True にするといけるっぽいが中身までは把握してない。
-----------------
tf.keras.losses.MeanSquaredError
平均2乗誤差 MSE
((y_real_1 - y_yosoku1)^2 + (y_real_2 - y_yosoku2)^2 + ... ) / n
いずれも各データの平均値を返す。合計値ではない。
あんまり関係ないけど googleの検索計算では log(0.6)で計算すると底は10
底を自然対数にするには ln(0.6)とln使います。
投稿者 muuming : 11:27
2020年06月24日
pythonに出てくる軸ってなんだ?
Array ( [0] => Array ( [0] => 0 [1] => 1 [2] => 2 ) [1] => Array ( [0] => 3 [1] => 4 [2] => 5 ) */ //3番目の$qを潰してる axis=2 $b = array(); for ($i = 0;$i < 3;++$i) { for ($p = 0;$p < 3;++$p) { for ($q = 0;$q < 3;++$q) { @$b[$i][$p] = $b[$i][$p] + $a[$i][$p][$q]; } } } print_r($b); //2番目の$pを潰してる axis=1 $b = array(); for ($i = 0;$i < 3;++$i) { for ($p = 0;$p < 3;++$p) { for ($q = 0;$q < 3;++$q) { @$b[$i][$q] += $a[$i][$p][$q]; } } } print_r($b); //1番目の$iを潰してる axis=1 $b = array(); for ($i = 0;$i < 3;++$i) { for ($p = 0;$p < 3;++$p) { for ($q = 0;$q < 3;++$q) { @$b[$p][$q] += $a[$i][$p][$q]; } } } print_r($b); //2番目と3番目を潰してる axis=(1,2) $b = array(); for ($i = 0;$i < 3;++$i) { for ($p = 0;$p < 3;++$p) { for ($q = 0;$q < 3;++$q) { @$b[$i] += $a[$i][$p][$q]; } } } print_r($b);
投稿者 muuming : 07:10
2020年06月19日
numpy onehotに変換
a = [3, 0, 8, 1, 9]
a_one_hot = np.identity(10)[a]
投稿者 muuming : 15:24
tensorfklow2カスタマイズング
https://www.atmarkit.co.jp/ait/articles/2003/23/news024.html
基本パターン
TensorFlow 2.xでは、
活性化関数: tf.keras.layers.Layerクラスをサブクラス化
レイヤー: tf.keras.layers.Layerクラスをサブクラス化
オプティマイザ(最適化アルゴリズム): tf.keras.optimizers.Optimizerクラスをサブクラス化
損失関数: tf.keras.losses.Lossクラスをサブクラス化
評価関数: tf.keras.metrics.Metricクラスをサブクラス化
などの機能がカスタマイズ可能である
各損失関数の中身は ここ Numpy backend にあった
----------------------------------
# カスタムの損失関数のPython関数を実装
def custom_loss(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred))
# カスタムの損失関数クラスを実装(レイヤーのサブクラス化)
# (tf.keras.losses.MeanSquaredError()の代わり)
class CustomLoss(tf.keras.losses.Loss):
def __init__(self, name="custom_loss", **kwargs):
super(CustomLoss, self).__init__(name=name, **kwargs)
def call(self, y_true, y_pred):
y_pred = tf.convert_to_tensor(y_pred) # 念のためTensor化
y_true = tf.cast(y_true, y_pred.dtype) # 念のため同じデータ型化
return custom_loss(y_true, y_pred)
----------------------------------
----------------------------------
# カスタムの活性化関数のPython関数を実装
def custom_activation(x):
return (tf.exp(x)-tf.exp(-x))/(tf.exp(x)+tf.exp(-x))
# カスタムの活性化関数クラスを実装(レイヤーのサブクラス化)
# (tf.keras.layers.Activation()の代わり)
class CustomActivation(tf.keras.layers.Layer):
def __init__(self, **kwargs):
super(CustomActivation, self).__init__(**kwargs)
def call(self, inputs):
return custom_activation(inputs)
-------------------------------------
-------------------------------------
# 正解かどうかを判定する関数を実装
def custom_matches(y_true, y_pred): # y_trueは正解、y_predは予測(出力)
threshold = tf.cast(0.0, y_pred.dtype) # -1か1かを分ける閾値を作成
y_pred = tf.cast(y_pred >= threshold, y_pred.dtype) # 閾値未満で0、以上で1に変換
# 2倍して-1.0することで、0/1を-1.0/1.0にスケール変換して正解率を計算
return tf.equal(y_true, y_pred * 2 - 1.0) # 正解かどうかのデータ(平均はしていない)
# カスタムの評価関数クラスを実装(サブクラス化)
# (tf.keras.metrics.BinaryAccuracy()の代わり)
class CustomAccuracy(tf.keras.metrics.Mean):
def __init__(self, name='custom_accuracy', dtype=None):
super(CustomAccuracy, self).__init__(name, dtype)
# 正解率の状態を更新する際に呼び出される関数をカスタマイズ
def update_state(self, y_true, y_pred, sample_weight=None):
matches = custom_matches(y_true, y_pred)
return super(CustomAccuracy, self).update_state(
matches, sample_weight=sample_weight) # ※平均は内部で自動的に取ってくれる
----------------------------------
投稿者 muuming : 05:35
2020年05月09日
pythonメモ
print_rっぽいの
from pprint import pprint
pprint(y2)
なんのオブジェクトか
print(type(y2))
pandasのマニュアル
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html
投稿者 muuming : 05:02