くだすれPython(超初心者用) その34 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/05/28(日) 20:34:15.87ID:7AoJbiyO
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その33
http://echo.2ch.net/test/read.cgi/tech/1490424742/
2017/06/08(木) 17:51:15.66ID:oPuedIYN
>>> import re
>>> s = 'あいうabcえおdefかきくけghこさしす'
>>> r = re.compile(r'([\x20-\x7E]+)', re.I | re.M | re.S)
>>> re.findall(r, s)
['abc', 'def', 'gh']
>>> r = re.compile(r'([\x20-\x7E]*)([\x80-\xFF]*)', re.I | re.M | re.S)
>>> re.findall(r, s)
[('', '\x82\xa0\x82\xa2\x82\xa4'), ('abc', '\x82\xa6\x82\xa8'), ('def', '\x82\xa9\x82\xab\x82\xad\x82\xaf'), ('gh', '\x82\xb1\x82\xb3\x82\xb5\x82\xb7'), ('', '')]

ここまでやってみたのですが
助言おながいしやす
2017/06/08(木) 17:52:42.67ID:SSbqo8UT
>>255
仮関数だから、なんでも良いんだよ。
2017/06/08(木) 17:56:53.39ID:oPuedIYN
一応これもやってみました

>>> import re
>>> s = 'あいうabcえおdefかきくけghこさしす'
>>> r = re.compile(ur'([\u0020-\u007E]*)([\u0100-\uFFFF]*)', re.I | re.M | re.S)
>>> re.findall(r, s.decode('cp932'))
[(u'', u'\u3042\u3044\u3046'), (u'abc', u'\u3048\u304a'), (u'def', u'\u304b\u304d\u304f\u3051'), (u'gh', u'\u3053\u3055\u3057\u3059'), (u'', u'')]
259デフォルトの名無しさん
垢版 |
2017/06/08(木) 18:19:41.54ID:HjFtHmDJ
小手先のやり方だな。一文字ずつ読んで判断していけよw

英語圏の人間は、文字によってバイト数が異なるということがない前提で作っているからな。
2017/06/08(木) 18:22:47.73ID:5RxlakhW
pythonってこんなもんかいな
2017/06/08(木) 18:32:16.30ID:SSbqo8UT
正規表現で半角の定義ができるなら

re.findall('[%s]+|[^%s]+' % (hankaku,hankaku), input)

で良いんじゃないの?
262デフォルトの名無しさん
垢版 |
2017/06/08(木) 18:37:14.78ID:TyBSFeDZ
>>259
一文字ずつ読んで判断する方法プリーズ
2017/06/08(木) 18:44:13.85ID:oPuedIYN
>>> import re
>>> s = 'あいうabcえおdefかきくけghこさしす'
>>> r = re.compile(ur'[\u0020-\u007E]+|[\u0080-\uFFFF]+', re.I | re.M | re.S)
>>> re.findall(r, s.decode('cp932'))
[u'\u3042\u3044\u3046', u'abc', u'\u3048\u304a', u'def', u'\u304b\u304d\u304f\u3051', u'gh', u'\u3053\u3055\u3057\u3059']

一応目的は達成出来ました
解答くださったみなさんありがd
264デフォルトの名無しさん
垢版 |
2017/06/08(木) 18:55:38.92ID:nEFPzZj3
>>248
>>254
>ある文字が半角か全角か判定できる関数が存在すると仮定
標準ライブラリにあるんだよなぁ・・

http://ideone.com/o6H6KL
2017/06/08(木) 19:09:56.95ID:VLAoukVp
これがパイソニアンの限界
266デフォルトの名無しさん
垢版 |
2017/06/08(木) 19:12:49.38ID:TyBSFeDZ
パイソレイニヤンに限界なんかないやで
2017/06/08(木) 20:08:20.47ID:SSbqo8UT
>>264
あっても無くても良いんだよ
まずは便利な関数があると仮定するところから始める
268デフォルトの名無しさん
垢版 |
2017/06/08(木) 20:20:01.25ID:nEFPzZj3
こっちのがシンプルかな
http://ideone.com/uozWrU
2017/06/08(木) 20:29:13.32ID:zG0E6fLy
>>264,268
ギリシャやキリルなどの曖昧幅が含まれる場合(east_asian_widthだとA)
環境によって幅変わるから自動的に半角扱いにするのは微妙じゃない?
2017/06/08(木) 20:39:50.28ID:nWL/9IZ5
l=[['0','ab'],['0','cde'],['1','eff'],['2','ngg']]
上記の配列から
0と1の部分に分けて同じ多次元配列に入れる方法を教えて下さい

出力結果
r=[[abcde],[eff],[ngg]]

お願いします
271デフォルトの名無しさん
垢版 |
2017/06/08(木) 21:14:39.24ID:nEFPzZj3
>>269
でも、unicodeの仕様だから・・
2017/06/08(木) 21:26:49.80ID:p2VDTlbT
>270

http://ideone.com/GYCdiX
273デフォルトの名無しさん
垢版 |
2017/06/08(木) 21:30:58.94ID:TyBSFeDZ
>>272
14点
2017/06/08(木) 22:14:24.62ID:5o2j99iY
http://ideone.com/ijciMN
順序については言及されていないので考慮してない
2017/06/08(木) 22:39:54.02ID:nWL/9IZ5
えっ?

おぱんちゅ?
2017/06/08(木) 22:41:20.39ID:+7TOT64t
ほぼ同一でしかも俺のより洗練されたコードが書かれていたときのこの感じ
https://ideone.com/of0Ktr
2017/06/08(木) 23:01:42.75ID:nWL/9IZ5
>>276
きのこ の 漢字?

嘘です
>>272
>>274
>>276

本当にありがとうございました。
2017/06/08(木) 23:50:48.29ID:zG0E6fLy
>>277
亀だけど、keyごとにまとめるならitertools.groupbyがある
https://ideone.com/529rAp
2017/06/08(木) 23:54:28.37ID:+7TOT64t
itertoolsくんほんま便利っすねぇ
2017/06/08(木) 23:55:25.36ID:+7TOT64t
>>277
この先生きのこるという言葉が昔流行ってたなそういや
281デフォルトの名無しさん
垢版 |
2017/06/08(木) 23:57:00.10ID:nWL/9IZ5
>>278
ありです

チュートリアルを呼んだ限りでは、
pythonはもっと、やり方が少ないと思ってましたが、意外と多いんですね

単語自体は然程、変わらない見たいですが……。

ありがとうです。
2017/06/09(金) 07:15:03.33ID:rw1qC18c
Rubyはデフォルトで、encode メソッドで、日本語に対応している。
NKF で、カタカナ・平仮名など、細かく変換できる

外人は、日本語の定義に関わっていないから、日本語の判別はできない。
日本人が入っている規格・国際委員会じゃないと、判定できない
2017/06/09(金) 07:24:25.32ID:ZMmAiLJD
さすが末尾がどうとか言ってた奴は空気を読む能力もひと味違うな
2017/06/09(金) 09:09:56.13ID:8jBpz0Pj
>>282
endがキモい言語の話なんて聞きたくないでつーw
285デフォルトの名無しさん
垢版 |
2017/06/09(金) 11:10:04.22ID:znstrb5L
>>282
> 外人は、日本語の定義に関わっていないから、日本語の判別はできない。
むしろ第一人者が外人なんだよなぁ・・
286デフォルトの名無しさん
垢版 |
2017/06/09(金) 12:47:43.88ID:KPArChvd
rubyなんて覚えなくていいんですよ
railsがもてはやされてるだけでそのうちphpみたいにおっさん向けになるだけですから!!
2017/06/09(金) 13:37:57.69ID:n9EUGL7J
まともなレスがほとんどないな
有料んとこいくしかないか
2017/06/09(金) 15:05:47.97ID:9MmjmiaM
さようなら、元気でな
289デフォルトの名無しさん
垢版 |
2017/06/09(金) 18:33:53.93ID:I227GLuQ
OS:Windows10、xamppをインストール

PythonでSeleniumというものを調べてグーグルクロームの
自動操作にチャレンジしております。

クロームの起動、URLの入力などは行えましたが、
「新規タブを開く」というそれだけの操作が出来ない現状です。


https://medium.com/@shintaro_toyoguchi/python%E3%81%A7chrome%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B-5e52871824a8
http://www.seleniumqref.com/api/python/element_set/Python_special_send_keys.html
これらから調べて、実行しますが、
エラーは発生せず、新規タブも開かない状態です。

aaaaa = driver.find_element_by_tag_name('body')
aaaaa.send_keys(Keys.CONTROL,'T')
こういった具合でCONTROLキーとTで開くという意図で実行しても
2行目の中を   Keys.CONTROL+'T'
としても新規タブは開かない状態です。

Keys.PAGE_DOWNや、Keys.UPなどで単独キーで画面を下げたり、上げたりの操作はうまくいくので
CONTROLと〜 ALTと〜など押しっぱなしの2つのキーを押す動作がうまくできていないのかと想像するのですが・・
すみませんが、よろしくお願い致します。
290デフォルトの名無しさん
垢版 |
2017/06/09(金) 19:09:46.53ID:KbSZteTQ
バグらしいぞ
これやってみたら
https://stackoverflow.com/questions/39281806/python-opening-multiple-tabs-using-selenium
291289
垢版 |
2017/06/09(金) 19:29:39.02ID:I227GLuQ
>>290
大変に有難うございました!
まさかバグで、このようにすぐ回答頂けて大変に助かりました。

そちらのサイトの2つめの答えの
To interact with a window, you need to set the context to〜〜
のような所を置き換えてみたら、
メインのタブに加えて新規タブを開くことができました。
stackoverflow等もすらすら読めるようにしないといけないですかね…
ありがとうございました!
2017/06/09(金) 20:16:27.78ID:QnJJmihU
>>290
あんた男前やな!
2017/06/09(金) 22:58:11.44ID:5czoYV9l
例外処理についてなんかしっくりきません
例えばcgi.pyを用いてcgiスクリプトを作るとき、そのcgi.pyのコードを読めばどこでどんな事をした時どんな例外が出るか分かりますが、cgi.py自体も色々なコードをimportしていて全て追いかけていられません
そうなると、テストの段階で引っかかる例外には対処できますが、それ以外の例外は不明なエラーとして片付けるしかなくなってしまうはずです
また、どの関数が例外を出すか分からないので、止まる位置によって復帰処理を細かく変えたいところではtry:except:でコードがガタガタになってしまいます
何かいい方法はないでしょうか?
2017/06/09(金) 23:34:19.74ID:ZMmAiLJD
本番もログっといて対処できそうならするし、できないならしないだけ

ガタつくのはエラー処理を例外に頼る言語の呪いみたいなもんで
いかようにもしようがない
2017/06/10(土) 00:32:15.21ID:p5cEokJX
>>293
どんな例外を出すか分からない関数が出してきた例外で正しく復帰するのは不可能だから諦めるしかない。
ドキュメントで明記されているものは処理して、他の例外はランタイムエラーでプログラムを停止させる。
ドキュメントがないライブラリは使わない
2017/06/10(土) 00:32:27.85ID:Gh+o1uOt
そうですか…うーんもやもやする
2017/06/10(土) 03:12:49.14ID:WtrsYPXN
実際javaには検査例外っていう投げられる例外を明示してその例外が投げられたときの対処処理を書かなければコンパイルエラーになるって仕組みもあるからその感覚は間違ってはないけどね

この辺は難しくて言語によって未だに試行錯誤がある
2017/06/10(土) 10:40:07.95ID:PQJA5zwZ
javaの例外義務化はうざい
2017/06/10(土) 15:06:19.78ID:q9A7XPCs
試行錯誤はしてるんだろうが
検査例外を採用した言語はJavaを除いて一つもないので
信者以外はあれを失敗だと見なしている
2017/06/10(土) 15:07:19.85ID:q9A7XPCs
http://qiita.com/Kokudori/items/0fe9181d8eec8d933c98
2017/06/10(土) 17:33:42.25ID:tyWD8KZe
Goのあれが一番やりやすい
多値は最高や
2017/06/10(土) 19:14:45.50ID:xSl9wCDP
仕事としては、Javaの検査例外が、確実。
絶対に無視できないから

ただ、面倒くさいから、Kotlin では無くなった。
そうすると、ろくすっぽ例外処理をしない、ソースコードが増える
303デフォルトの名無しさん
垢版 |
2017/06/10(土) 19:20:42.25ID:yLLSprfl
いつか来た道
2017/06/10(土) 19:30:51.03ID:xO5K6/Fq
確実に
catch(Throwable e){e.printStacktrace();}
するんですね分かります
2017/06/10(土) 20:26:05.83ID:CzqWl5Nx
Pythonは初心者の者です、よろしくお願いします

Pythonの読み方は「パイトン」と「パイソン」どちらでも良いそうですが、現場なんかではどちらの呼び方の方が多いですか?

個人的には英語のギリシャ語起源の単語などの発音に近いパイトンの方が好みなのですが…
これは私の第二外国語がドイツ語だったせいもあるかもしれません
2017/06/10(土) 20:39:34.89ID:T0tzL28a
元ネタが日本でよくモンティパイソンって呼ばれてるからな、多分パイソンのほうが通じやすい
2017/06/10(土) 20:43:22.71ID:GrQ3Xe9Q
どうあれ、>>300は分かりやすかった
2017/06/10(土) 22:33:33.89ID:jLYOqeYO
ピトンと発音するひとがいた。
309デフォルトの名無しさん
垢版 |
2017/06/11(日) 00:52:55.11ID:eBxL4N8c
>>305
英語圏ならパイトンは通じるだろうが、パイソンはまず通じない。
2017/06/11(日) 06:58:10.34ID:fqu+2byC
どこの英語圏だ
2017/06/11(日) 07:55:45.05ID:HFUbuA8d
パイトンもパイソンも通じねえよアホか
カタカナ英語とか小学生かっての
2017/06/11(日) 10:02:12.96ID:lFjk+ZAI
正しくはパイチョンだ
チョンにアクセントをもってくる
これなら世界中に通用する
313デフォルトの名無しさん
垢版 |
2017/06/11(日) 12:29:30.92ID:7PvmoOJK
NumPyについて質問です。

A = np.array([1, 2], [3, 4])
A.dtype

とやると


dtype('int32')

と出力されます。

ゼロから作るディープラーニングという本では、結果が

dtype('int64')

となっています。

この違いはなぜでしょうか?

anacondaは64bitのをインストールしています。
314デフォルトの名無しさん
垢版 |
2017/06/11(日) 13:01:45.12ID:fc8MQVNK
2つの配列を交互に結合

a=[0,0,0,0]
b=[1,1,1]

求める結果
0,1,0,1,0,1,0

どの様にしたら実装できるでしょうか?
教えて下さい。
315デフォルトの名無しさん
垢版 |
2017/06/11(日) 13:09:43.10ID:7PvmoOJK
[a[i//2] if i%2 == 0 else b[(i-1)//2] for i in range(len(a) + len(b))]
2017/06/11(日) 14:09:57.37ID:abflG9dt
長さが同じならzip, chainでいいんだけどな
2017/06/11(日) 14:18:10.99ID:abflG9dt
>>313
Windows(笑)使ってるだろ
numpyのデフォルトの整数型のサイズは
その環境のCランタイムのlong型のサイズになる

Windowsは64bit環境でもlong型は32bit
LinuxやUnix(OSX含む)は64bit環境ならlong型は64bitになる
318デフォルトの名無しさん
垢版 |
2017/06/11(日) 14:28:10.21ID:fc8MQVNK
>>315
ありがとうございます
失礼します
2017/06/11(日) 14:28:47.32ID:7PvmoOJK
>>317

Windowsに比べてLinuxが優れているところって何ですか?

どうも使いにくいのでWindowsのみ使っています。
2017/06/11(日) 14:54:06.94ID:xOOyeNe0
windows用ソフトは単体で使うことが前提のものが多い

linuxというかunix系はコマンドラインで使うプログラムが主で
標準入出力の概念があるので複数のプログラムを連携させやすい
2017/06/11(日) 15:06:34.47ID:3LdQN3Tj
flask でjavascript使うときってCDNでやるのが一般的ですか?
322デフォルトの名無しさん
垢版 |
2017/06/11(日) 15:24:02.63ID:FIjF4G2p
>>314
from itertools import chain
a=[0,0,0,0]
b=[1,1,1]
r = list(chain(*zip(a, b))) + a[len(b):]
2017/06/11(日) 17:22:52.02ID:dEzGyxGP
Windowsのコンソールは設計が腐ってるからあれで作業したくない
2017/06/11(日) 17:27:04.32ID:Q5yKyADs
そうか
2017/06/11(日) 17:27:15.68ID:abflG9dt
>>319
Windowsを考慮して書いている入門書は少ない
君がさっき持っていたような疑問が生まれないのがメリットの一つだね…

Windows対応ならWindows対応だと表紙に書かれるくらい特筆すべきことなんだ
レアなんだよ奇行種なんだよ
2017/06/11(日) 17:31:11.53ID:7PvmoOJK
Linuxはプログラムだけやるのなら問題ないと思いますが、
なんかプラウザの表示とかが綺麗じゃないように思うのですが。

あと見た目が洗練されていないように思います。

>>323
IDEを使えばWindowsでも無問題ではないでしょうか?
327デフォルトの名無しさん
垢版 |
2017/06/11(日) 17:33:59.77ID:7PvmoOJK
>>325

大したメリットではないですね。

みなさんは、LinuxはVirtual Boxとか使って利用しているのですか?
2017/06/11(日) 18:15:51.53ID:olRVXrNl
>>323
cygwin(gnupack)つかえば?
mintty,bash使えるよ
329デフォルトの名無しさん
垢版 |
2017/06/11(日) 18:35:18.31ID:fc8MQVNK
>>322
ありがとうございます
2017/06/11(日) 18:47:51.83ID:xOOyeNe0
>>327
linuxについて聞きたいならlinux板っていうのがあるよ
http://hayabusa6.2ch.net/linux/
331デフォルトの名無しさん
垢版 |
2017/06/11(日) 18:53:10.87ID:sCflcWBm
>>312
+1

>>333
+1

>>327
いいえ

>>328
cygwinはオワコン
今はもっと楽にminttyだけ使える
2017/06/11(日) 20:22:41.67ID:KA41Jv4+
windows10限定とかじゃなくて?
333デフォルトの名無しさん
垢版 |
2017/06/11(日) 21:28:43.41ID:/WpsuQpF
ユーチューバーは収入の仕組みが違う?!どっちが儲かるか?
http://youtube-youtuber.com/360.html

従来型のユーチューバーは、広告収入をメインの収入源としています
1.動画にのせる広告(動画広告+画像広告)からの報酬や
2.スポンサー収入(企業からの依頼を受けて商品を紹介)

海外のユーチューバーの傾向として、広告収入ではなく、自分のビジネスを
メインにすることによって広告収入を遥かに超える収入を叩き出しています。
例えば、beauty guru(美のカリスマ)と謳われる、ユーチューバーのミシェル・ファンは
広告収入は1800万得ていますが・・他方で美容化粧品会社Ipsyを立ち上げて、
年収1億ドル(約110億円)を売り上げました。
彼女は「メイクのチュートリアル動画」を投稿していますが、動画の中で自分の会社の商品を
使っているんです。
そしてその中で使った商品を、online shopで買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。
リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです
334デフォルトの名無しさん
垢版 |
2017/06/11(日) 21:39:59.26ID:fc8MQVNK
ちょっと、スレ違いだけど
何でココの住人は親切なの?

リアルだと、自分で解決できないなら、自己責任&向いてない
で、切り捨て。
(有料なのは高すぎる上に、知りたい事聞いても、
1つの解決方法だけでコード説明とか、無し)

無料にも関わらずスレ住人が優しすぎて不安です。
随分前から、お世話に成ってるので書き込みました。
2017/06/11(日) 22:00:27.66ID:xkKn7Sms
質問に答えるの使命ともと思い込んでいるのだろう
お前のいうことも正しい
2017/06/11(日) 22:02:06.15ID:xkKn7Sms
回答してる奴は自分の為ということな
2017/06/11(日) 22:17:01.64ID:zJlWA5/j
回答して突っ込まれるのも勉強になるしな
338デフォルトの名無しさん
垢版 |
2017/06/11(日) 23:21:49.36ID:FIjF4G2p
>>327
Hyper-V、Docker、自宅のサーバ、VPS
でも、Windows上でPython動かすことも結構多い
2017/06/11(日) 23:28:36.36ID:W7KdIoyP
自分の知識ひけらかせるんだから教えるの好きな人も多いと思うけど
リアルだとそういう奴居てもウザがられてるんじゃねw
2017/06/11(日) 23:35:34.11ID:fc8MQVNK
( 自己解釈、しておきます(笑) )
ありがとうございました
341デフォルトの名無しさん
垢版 |
2017/06/12(月) 02:39:49.87ID:WeSyAxwl
Pythonの勉強がてらデータベースも使ってwebアプリ作ろうと思ってるんですが
Pythonはweb関連が苦手と小耳にはさみました
具体的にはどれくらい苦手なんですか?
2017/06/12(月) 08:57:42.36ID:jZcxOkDE
苦手ってことはないと思うが
ただ日本でWebに使っている人は少なし
人が少なしは情報が少なし
2017/06/12(月) 11:03:29.96ID:bV4n/B4Y
苦手っていうより、pythonのwebフレームワークがJavaやRubyやPHPのそれに比べて、普及してないってことだと思う。
なんでだろ?
重いのかな?
2017/06/12(月) 12:21:09.84ID:qtMRHbAW
railsみたいな目立つた成功例がないのとレンタルサーバーで必ずしも利用可能でないこと、2と3の移行のゴタゴタの影響と色々理由はあると思う
345デフォルトの名無しさん
垢版 |
2017/06/12(月) 13:19:36.59ID:yuw+moiO
斎藤康毅のディープラーニングの本に意味が分からないコードがありました。

p.111

def f(W):
■■■■return net.loss(x, t)

net は simpleNet というクラスのインスタンスです。

このコードがさっぱり分かりません。

W がなぜ引数にあるのでしょうか?
346デフォルトの名無しさん
垢版 |
2017/06/12(月) 18:38:21.92ID:yuw+moiO
↓このプログラムですが、ひどすぎないですか?
斎藤康毅のディープラーニングの本のコードです。

def softmax(x):
■■■■if x.ndim == 2:
■■■■■■■■x = x.T
■■■■■■■■x = x - np.max(x, axis=0)
■■■■■■■■y = np.exp(x) / np.sum(np.exp(x), axis=0)
■■■■■■■■return y.T

■■■■x = x - np.max(x) # オーバーフロー対策
■■■■return np.exp(x) / np.sum(np.exp(x))

def cross_entropy_error(y, t):
■■■■if y.ndim == 1:
■■■■■■■■t = t.reshape(1, t.size)
■■■■■■■■y = y.reshape(1, y.size)
■■■■■■■■
■■■■# 教師データがone-hot-vectorの場合、正解ラベルのインデックスに変換
■■■■if t.size == y.size:
■■■■■■■■t = t.argmax(axis=1)
■■■■■■■■■■■■
■■■■batch_size = y.shape[0]
■■■■return -np.sum(np.log(y[np.arange(batch_size), t])) / batch_size
347デフォルトの名無しさん
垢版 |
2017/06/12(月) 18:39:18.66ID:yuw+moiO
def numerical_gradient(f, x):
■■■■h = 1e-4 # 0.0001
■■■■grad = np.zeros_like(x)
■■■■
■■■■it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
■■■■while not it.finished:
■■■■■■■■idx = it.multi_index
■■■■■■■■tmp_val = x[idx]
■■■■■■■■x[idx] = float(tmp_val) + h
■■■■■■■■fxh1 = f(x) # f(x+h)
■■■■■■■■
■■■■■■■■x[idx] = tmp_val - h
■■■■■■■■fxh2 = f(x) # f(x-h)
■■■■■■■■grad[idx] = (fxh1 - fxh2) / (2*h)
■■■■■■■■
■■■■■■■■x[idx] = tmp_val # 値を元に戻す
■■■■■■■■it.iternext()
■■■■■■■■
■■■■return grad
348デフォルトの名無しさん
垢版 |
2017/06/12(月) 18:39:42.89ID:yuw+moiO
class simpleNet:
■■■■def __init__(self):
■■■■■■■■self.W = np.random.randn(2,3) #標準正規分布による 2x3 の行列

■■■■def predict(self, x):
■■■■■■■■return np.dot(x, self.W)

■■■■def loss(self, x, t):
■■■■■■■■z = self.predict(x)
■■■■■■■■y = softmax(z)
■■■■■■■■loss = cross_entropy_error(y, t)

■■■■■■■■return loss
349デフォルトの名無しさん
垢版 |
2017/06/12(月) 18:40:13.16ID:yuw+moiO
x = np.array([0.6, 0.9])
t = np.array([0, 0, 1])

net = simpleNet()

f = lambda w: net.loss(x, t)
dW = numerical_gradient(f, net.W)

print(dW)


★★★★★★★★★★★★★
★↑の f がひどすぎる   ★
★★★★★★★★★★★★★
2017/06/12(月) 19:10:55.54ID:O74bSsVE
ここは見た?
https://github.com/oreilly-japan/deep-learning-from-scratch/wiki/errata

確かに設計としてどうかと思うけど間違ってはないよ
numerical_gradientの実装コードみると内部で第2引数のnet.Wの値が変更されることになる
そののちにfが呼び出されるからちゃんと意図通りに動く
351デフォルトの名無しさん
垢版 |
2017/06/12(月) 19:14:55.53ID:yuw+moiO
>>350

間違っていないというのは分かりますが、あまりにもひどすぎます。
こんなひどいコードは見たことがありません。
352デフォルトの名無しさん
垢版 |
2017/06/12(月) 19:16:21.04ID:yuw+moiO
fxh1 = f(x) # f(x+h)

↑ここですが、

fxh1 = f(a)

とかでもいいわけです。
353デフォルトの名無しさん
垢版 |
2017/06/12(月) 19:16:47.93ID:yuw+moiO
こんなひどいコードを公にするという神経が分かりません。
害悪以外の何物でもありません。
2017/06/12(月) 19:32:51.63ID:dNgrCKN8
女子高生の会話みたいに
「うんうん ひどいよね〜」
って言えばいいのか?
2017/06/12(月) 19:38:06.58ID:9WLudEgI
女の腐ったような奴
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況