質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1054閲覧

simoidすると数値が0になる理由

退会済みユーザー

退会済みユーザー

総合スコア0

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/02/18 21:40

編集2021/02/20 16:40

google collaborate使用です。
画像のRGBは、どのピクセルもどの値も255前後です。

python

1import numpy as np 2from PIL import Image 3 4img = np.array(Image.open('drive/My Drive/0.jpg')) 5 6img = np.sum(img, axis = 1) 7 8def sigmoid(x): 9 return 1 / (1 + np.exp(-x)) 10 11print((sigmoid(img)))

実行結果
[[0. 0. 0.]
・・・
[0. 0. 0.]]
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:9: RuntimeWarning: overflow encountered in exp
if name == 'main':

疑問
実行結果が「0」になっているのは、有効数字の問題でしょうか・・・?
どのようにして、各成分の有効数字を、0以外の数字が出てくるように設定するのでしょうか・・・?
また、有効数字とは別の問題があるのでしょうか?

目的は数字認識プログラムを自力作成しながら、pythonのこのプログラムについて色々な事を学んでいく事ですね。

目的は数字認識プログラムを自力作成しながら、pythonのこのプログラムについて色々な事を学んでいく事ですね。

img=(255-img)/255
としたら、

[[0.5 0.5 0.5 ]
・・・
[0.99999917 0.99999917 0.99999917]
[0.50588208 0.50588208 0.50588208]
[0.52546814 0.52546814 0.52546814]
[0.51568113 0.51568113 0.51568113]
[0.52742343 0.52742343 0.52742343]
[0.52546814 0.52546814 0.52546814]
[0.50980267 0.50980267 0.50980267]
[0.51176254 0.51176254 0.51176254]]

となりました、これは問題なしですかね・・・?そのshapeバグみたいなの以外は。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

有効数字とは別の問題がたくさんあります。

全部説明するのは大変なので、以下の実行結果を見て、ご自分で考えてください。

python

1>>> import numpy as np 2>>> from PIL import Image 3>>> 4>>> img = np.array(Image.open('white.jpg')) 5>>> print('img.shape =', img.shape) 6img.shape = (24, 24, 3) 7>>> 8>>> print('img.dtype =', img.dtype) 9img.dtype = uint8 10>>> 11>>> print('img[0,0] =', img[0,0]) 12img[0,0] = [255 255 255] 13>>> 14>>> 15>>> img2 = np.sum(img, axis = 1) 16>>> print('img2.shape =', img2.shape) 17img2.shape = (24, 3) 18>>> 19>>> print('img2.dtype =', img2.dtype) 20img2.dtype = uint32 21>>> 22>>> print('img2[0,0] =', img2[0,0]) 23img2[0,0] = 6120 24>>> 25>>> print('-img2[0,0] =', -img2[0,0]) 26-img2[0,0] = 4294961176 27>>> 28>>> 29>>> def sigmoid(x): 30... return 1 / (1 + np.exp(-x)) 31... 32>>> img3 = sigmoid(img2) 33>>> print('img3.shape =', img3.shape) 34img3.shape = (24, 3) 35>>> 36>>> print('img3.dtype =', img3.dtype) 37img3.dtype = float64 38>>> 39>>> print('img3[0,0] =', img3[0,0]) 40img3[0,0] = 0.0

投稿2021/02/18 23:27

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/19 07:34 編集

これその、x軸方向の数値の型がfloat64である事が問題なんでしょうか? 扱える数値は12桁16桁になる・・・つまり(割り切れない無限小数は)「扱えない」から、でしょうか・・・? 数値の型を変えればいけるんでしょうか??
ppaul

2021/02/19 09:24

最初に、-img2[0,0] が 4294961176 という正の数になっているのは何故なのかを考えてみてください。
退会済みユーザー

退会済みユーザー

2021/02/19 13:31

img2も-img2も正になってますね、 もしかして正の値しか入らない型で、 マイナスを表現する時は大きな数を代用しているとかですかね?
ppaul

2021/02/19 13:42

img2.dtype = uint32 のuint32はどういう意味でしょう?
退会済みユーザー

退会済みユーザー

2021/02/19 22:14

UInt32値型は、0 ~ 4294967295 の範囲の値を持つ符号なし整数を表します。 というだけで、関係がいまいち。。
ppaul

2021/02/19 22:29

https://www.cc.kyoto-su.ac.jp/~yamada/programming/bit.html の ところで,-2, -1 という負の数を入れたはずなのに,実際には 254, 255 という数値となり, 256, 257 という数値に対しては,0, 1 となっていることにも注意しよう. というあたりを読んでください。これは理解できますか。
退会済みユーザー

退会済みユーザー

2021/02/19 23:54

一周するわけですよね。 今回-img2が429496117となっているのは、unit32の範囲を1越えているので不思議ですが、 -1だとすると一周して最大値に戻るという事ですかね。 で、これがどう関連するのでしょうか。
ppaul

2021/02/20 01:07

expがオーバーフローする原因を知りたいというのが、元々のエラーでしたね。そしてそれがゼロになる原因です。 あと、img2.shape = (24, 3)は別のバグなので、直さないと、後で困りますよ。
退会済みユーザー

退会済みユーザー

2021/02/20 08:06

つまりシグモイドの計算式中におけるe^xのxの値が大きいから、e^xが大きすぎて。その部分でオーバーフローしてしまったって事ですかね。 数値を255で割ってから代入等すれば良いんでしょうか・・・。 shapeのバグはよく分かりません・・・。
ppaul

2021/02/20 09:35

naganumaさんがやりたいことは何なのでしょうか。場当たり的に修正していては本来の目的は達成できないと思います。
退会済みユーザー

退会済みユーザー

2021/02/20 10:08

目的は数字認識プログラムを自力作成しながら、pythonのこのプログラムについて色々な事を学んでいく事ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問